我正在开发一个小项目,包括注册,登录,密码重置和后端用户管理.我必须为不同的语言创建翻译文件,而不是使用像gettext这样的东西(我一无所知),我决定使用静态数组为每个语言文件实现一个非常简单的方法,如下所示:
function plLang($phrase) { $trimmed = trim($phrase); static $lang = array( /* ----------------------------------- 1. REGISTRATION HTML ----------------------------------- */ 'LNG_1' => 'some text','LNG_2' => 'some other text',etc. ... ); $returnedPhrase = (!array_key_exists($trimmed,$lang)) ? $trimmed : $lang[$trimmed]; echo $returnedPhrase; }
它工作正常,在这个阶段非常快,但我的标记现在充满了PHP语言标签,我不确定我做出了正确的决定.我以前从未这样做过,所以我不知道我期待什么.似乎在我完成所有工作时,这个文件将长达一英里.
这是一个很好的方法吗?你有什么更好的建议吗?
谢谢!
这就是我在我的cms中做的事情:
原文链接:https://www.f2er.com/php/138917.html>对于我开发的每个插件/程序/实体(您的名字),我创建一个/ translations文件夹.
>我把所有的翻译都放在那里,名字如el.txt,de.txt,uk.txt等所有语言
>我将翻译数据存储在JSON中,因为它易于存储,易于阅读,最容易让每个人发布.
>文件可以在文件中轻松进行UTF8编码,而不会弄乱数据库,从而可以在文件模式下读取它们. (只是JSON.parse他们)
>在安装此类插件时,我只需遍历所有翻译并将它们放入数据库中,每个表格行使用每种语言. (等TEXT数据类型的数据列)
>对于每个页面渲染,我只查询一次数据库以获取所选语言的行,并调用json_decode()到整个结果以获取它一次;然后将它放在$_SESSION中,以便下次为当前所选语言获取闪速转换字符串.
整个事情都是在我考虑性能和兼容性的情况下开发的.
在你的情况下,这样的文件中的行可能是:
在en.txt中
{"id":"LNG_1","str":"My word"}
在de.txt中
{"id":"LNG_1","str":"Mein Wort"}
当前语言可以存储在会话中,如$_SESSION [“language”];并使用
以此为出发点.
然后,您可以阅读以下翻译:
lang("LNG_1");