首先 – 我知道有很多关于多语言功能的答案,我没有找到我想要的答案
我想到了可以使用的3种方式,每次在Web窗体界面添加一个新值时,我需要使用PHP创建语言文件
前2个是类似的 – 使用数组或在特定语言文件中定义并将其包含在运行的开始处,
但在这种情况下,我可能会加载数千个定义或数组,以便在每个页面中使用少量.
第三种方法是创建使用关键字或完整短语调用的函数,并使用IF-s或switch来选择正确的术语(或者如果没有匹配则返回被调用的键
最好的方法是什么?
编辑:我决定做一些测试,我尝试了3种不同的方式,并测量了时间和记忆:
>我定义了一个数组(22个值),并从1到1,000,000运行它 – 检查调用值 – 使用%运算符选择要使用的值,并将其设置在变量上
时间:0.476591110229秒
>内存:6536字节
>我使用相同的数组(22个值),并使用函数调用它 – return $arr [$string]; (只是为了方便的工作方式,并有能力改变它,以不同的方式,如果我需要)
>花费时间:0.960635185242秒
>内存:6704字节
>我创建了一个包含字符串列表的函数,并使用switch – > case我选择了返回的字符串
>花费时间:1.46953487396秒
>内存:848字节
那么现在的问题是什么是正确的选择 – 喜欢时间或喜欢记忆,
如果这些网站很大,并且会占用很多内存 – 我无法改变它,因为它使用数组构建 – 如果它与功能一起工作,我可以随时改变它
我非常感谢你的帮助,
谢谢
在代码方面,这样的东西对你来说很棒.它必须基于用户的选择(从按钮或菜单中选择语言)或基于浏览语言(它不是最好的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 ... ?>
en_language.PHP
<?PHP // ENGISH Language file define('LABEL_MENU','Main Menu'); // the whole file with the labels of your system ?>
pt_language.PHP
<?PHP // PORTUGUESE Language file define('LABEL_MENU','Menu Principal'); // the whole file with the labels of your system ?>
补充
如果你希望使用数组类型,而不是使用define()的Constant值,但是我不知道什么比..
$arrays = array("MAIN_MENU" => "Main Menu","LEFT_MENU" => "Left Menu"); echo $arrays["MAIN_MENU"];