【发布时间】:2010-09-16 08:17:44
【问题描述】:
我之前为网站创建了语言包,但我不确定我正在做的是否是最好的方法。
基本上,我所拥有的只是一个包含定义字符串常量的变量的文件。通常是一组数组,其中一个数组通常指的是网站的特定元素。
然后站点代码只包含基于标志的适当文件,然后回显出适当的数组元素。
有哪些方法可以减少维护问题并降低性能?
【问题讨论】:
标签: php language-agnostic language-packs
我之前为网站创建了语言包,但我不确定我正在做的是否是最好的方法。
基本上,我所拥有的只是一个包含定义字符串常量的变量的文件。通常是一组数组,其中一个数组通常指的是网站的特定元素。
然后站点代码只包含基于标志的适当文件,然后回显出适当的数组元素。
有哪些方法可以减少维护问题并降低性能?
【问题讨论】:
标签: php language-agnostic language-packs
我建议使用Zend_Translate。它在某种程度上是人们留下的其他建议的组合,只是更易于维护和设计更好。
您可以根据自己的喜好切换适配器(支持 gettext、csv 和许多其他适配器),您不需要定义或全局变量来污染您的全局范围,并且有据可查。
【讨论】:
使用 PHP 的最佳选择是 GetText,但并非所有服务器都内置了它,因此如果您正在管理服务器,它可能会成为阻碍。
【讨论】:
执行此操作的几种最常见方法是:
1) 使用define('SOME_STRING', 'Some string'); - 只需使用不同的文件填充每种语言的这些定义。这非常简单,您不必到处使用“全局”。
2) 在函数中包装字符串:translate('My String') - 这更灵活,因为您可以解析代码以创建要翻译的字符串列表,并添加变量等功能,例如translate('I can count to [number]', 10);(当然,你通常选择一个较短的函数名,比如“_”)
【讨论】: