具有全局$ lang数组的PHP本地化架构

时间:2015-11-14 08:49:29

标签: php

我正在本地化我的网站并使用数组来存储语言字符串。这是我的架构:

每种语言一个文件,例如:英语为language_en.php,法语为language_fr.php,包含在脚本的开头。

在每个语言文件中,我都有一个数组(由大约2000个元素组成):

static $phrases = array();
$phrases['del']  = 'Remove';
...

然后我有一个功能:

function phrase($key) {
   global $phrases;
   return $phrases[$key]
}

在我的应用程序中,我需要进一步使用本地化字符串,我使用:

phrase('del');

关于这种架构的几个问题:

  1. $language是全球性的,这会产生负面影响 当数组越来越大时效果?
  2. 将数组直接添加到phrase()函数中并避免它是全局的会不会更好?

1 个答案:

答案 0 :(得分:1)

这种做法没有错 尽管阵列有时会长大,但它不应该导致性能下降。此外,在这种情况下使用全局也没关系 如果你是全球偏执狂"您可以使用闭包来创建全局变量的副本,如下所示:

$phrase = function() use ($phrases) 
{    
    return $phrases[$key];
};

我建议您使用symfony/translation组件来管理翻译目录。 Symfony trabslations是一个很好的组成部分。

也许你想看一下这个答案(我的):Best way to organize your localized translation file