在站点上创建各种语言包的最佳实践?PHP

在站点上创建各种语言包的最佳实践?PHP,php,language-agnostic,language-packs,Php,Language Agnostic,Language Packs,我以前为一个网站创建过语言包,但我不确定我所做的是不是最好的方法 基本上,我只有一个文件,其中包含定义字符串常量的变量。通常是一组数组,其中数组通常引用站点的特定元素 然后站点代码只包含基于标志的适当文件,然后echo输出适当的数组元素 有哪些方法可以减少维护和性能方面的麻烦?最常用的方法有: 1) 使用define('SOME_STRING','SOME STRING')-只需在不同的文件中填充每种语言的这些定义即可。这很容易,而且你不必到处使用“全局” 2) 在函数中包装字符串:transl

我以前为一个网站创建过语言包,但我不确定我所做的是不是最好的方法

基本上,我只有一个文件,其中包含定义字符串常量的变量。通常是一组数组,其中数组通常引用站点的特定元素

然后站点代码只包含基于标志的适当文件,然后echo输出适当的数组元素


有哪些方法可以减少维护和性能方面的麻烦?

最常用的方法有:

1) 使用
define('SOME_STRING','SOME STRING')-只需在不同的文件中填充每种语言的这些定义即可。这很容易,而且你不必到处使用“全局”


2) 在函数中包装字符串:
translate('My String')
-这更灵活,因为您可以解析代码以创建要翻译的字符串列表,并添加变量等功能,例如
translate('I can count to[number]',10)(当然,您通常会选择一个较短的函数名,如“”)

使用PHP时,您可以选择的最佳选项是,但并非所有服务器都内置了它,因此,如果您正在管理服务器,它可能会成为一个障碍。

我建议使用。这在某种程度上是人们在这里留下的其他建议的结合,只是更易于维护和更好地设计


您可以根据自己的喜好切换适配器(支持gettext、csv和其他多种),您不需要定义或全局变量来污染您的全局范围,而且它有很好的文档记录。

我支持这一点,因为在某些情况下gettext不是线程安全的,所以在某些设置中gettext将成为您的眼中钉,另外,这取决于正在安装的扩展。Zend_Translate实现了从Gettext到基于XML的翻译的多种常用方法,并集成在其他组件中