我正在本地化我的网站并使用数组来存储语言字符串。这是我的架构:
每种语言一个文件,例如:英语为language_en.php
,法语为language_fr.php
,包含在脚本的开头。
在每个语言文件中,我都有一个数组(由大约2000个元素组成):
static $phrases = array();
$phrases['del'] = 'Remove';
...
然后我有一个功能:
function phrase($key) {
global $phrases;
return $phrases[$key]
}
在我的应用程序中,我需要进一步使用本地化字符串,我使用:
phrase('del');
关于这种架构的几个问题:
$language
是全球性的,这会产生负面影响
当数组越来越大时效果?phrase()
函数中并避免它是全局的会不会更好?答案 0 :(得分:1)
这种做法没有错 尽管阵列有时会长大,但它不应该导致性能下降。此外,在这种情况下使用全局也没关系 如果你是全球偏执狂"您可以使用闭包来创建全局变量的副本,如下所示:
$phrase = function() use ($phrases)
{
return $phrases[$key];
};
我建议您使用symfony/translation组件来管理翻译目录。 Symfony trabslations是一个很好的组成部分。
也许你想看一下这个答案(我的):Best way to organize your localized translation file