首先,我知道有很多关于多语言功能的答案,我找不到我想要的答案.
我想到了三种可以使用的方法.每次我向Web表单界面添加新值时,我都需要使用PHP创建语言文件.
前两个类似 - 在特定语言文件中使用数组或定义,并在运行开始时包含它.但在这种情况下,我可能会加载数千个定义或数组,只是为了在每个页面中使用一些.
第三种方法是创建每次使用关键字或完整短语调用的函数,并使用IF
-s或switch
选择正确的术语(如果不匹配则返回调用的键).
最好的方法是什么?我决定做一些测试.我尝试了三种不同的方法,并测量了它所花费的时间和内存:
我定义了一个数组(22个值),并从1到1,000,000运行它 - 检查调用值 - 三个中的一个,通过使用%
运算符选择要使用的内容并将其设置在变量上
我使用相同的数组(22个值)并使用函数调用它 - return $arr[$string];
(只是为了方便的工作方式和能够根据需要将其更改为不同的方式)
我创建了一个包含字符串列表的函数,并使用switch
- > case
我选择了返回的字符串
那么,现在问题是什么是正确的选择 - 更喜欢时间或更喜欢记忆.
如果站点很大并且需要大量内存 - 我无法更改它,因为它是使用数组构建的 - 如果它与函数一起工作,我总是可以改变它.
在代码方面,像这样的东西对你来说很棒.它必须基于用户的选择(从按钮或菜单中选择语言)或基于浏览语言(它不是最好的aprouch).
的index.php
<?php
// verify the user's choice
if ($_POST[lang] == "en")
{
include_once("en_language.php");
}
if ($_POST[lang] == "pt")
{
include_once("pt_language.php");
}
// calling a lable in your page
echo LABEL_MENU;
// the rest of your file
...
?>
Run Code Online (Sandbox Code Playgroud)
en_language.php
<?php
// ENGISH Language file
define('LABEL_MENU','Main Menu');
// the whole file with the labels of your system
?>
Run Code Online (Sandbox Code Playgroud)
pt_language.php
<?php
// PORTUGUESE Language file
define('LABEL_MENU','Menu Principal');
// the whole file with the labels of your system
?>
Run Code Online (Sandbox Code Playgroud)
补充
如果你希望使用数组类型而不是使用define()的常量值,但我不确定什么比...更快
$arrays = array("MAIN_MENU" => "Main Menu", "LEFT_MENU" => "Left Menu");
echo $arrays["MAIN_MENU"];
Run Code Online (Sandbox Code Playgroud)
将字符串分组为类别 - 一个是全局的,另一个是与您在网站中拥有的视图相对应的(例如 lang_global、lang_profile、lang_something_else) 包括全局文件和与当前视图相对应的文件。这样您就不会加载整个翻译,而只会加载其中的一个子集。而且它更易于管理,您可以提供上下文,对同一字符串进行不同的翻译。
归档时间: |
|
查看次数: |
16461 次 |
最近记录: |