我的网站(在Linux服务器上)需要支持多种语言 拥有/存储同一网站的多种语言版本的最佳做法是什么? 我可以想到一些:
答案 0 :(得分:2)
对于网站,您确实需要考虑多种类别的内容进行本地化:
对于1.主要决定是否使用CMS。如果是,您绝对需要选择支持多种语言的语言。我不了解PHP CMS的最新发展,但是一些Django CMS应用程序(Django-CMS-2,FeinCMS)支持多语言内容。例如,不要忘记日期戳也需要本地化(或者你可以通过选择ISO日期来解决这个问题,尽管这可能并不总是可行)。如果您不使用CMS,并且所有内容都在您的HTML文件中,那么gettext
是可行的方法,并将.mo文件(和您的离线.po文件)按语言保存在文件夹中。
对于2. 如果您有一个具有良好多语言支持的CMS,请尽可能在CMS内部获取。原因是这些位确实发生了变化,并且您希望尽可能少地编辑模板。如果您自己编写代码,请考虑按语言导出所有in-CMS字符串的方法,以便将它们交给翻译人员。否则,再次gettext
。主要问题是这些元素可能需要硬编码语言选择代码(if $language = X display content1 ...
)
对于3.,如果它在您的模板中,请使用gettext
。对于图像,每个语言文件夹将派上用场,为了天堂的缘故,选择图像的一代可以自动化,或者你(或你的图形艺术家)会疯狂编辑100个自定义图像与字符串的语言你不明白。
对于2.和3.,从语言选择中抽象可能有助于选择适当的块或内容目录(保留本地化图像或.mo文件)。
你绝对想要避免的是保留一堆包含大量文本内容的HTML文件,这将是一个难以维护的噩梦。
编辑:关于gettext,.po和.mo文件的所有内容都在GNU gettext manual(比您想知道的更多)或稍微过时但更友好的tutorial。对于PHP,有PHP gettext functions,还有Zend Locale documentation
答案 1 :(得分:1)
我建议使用Zend_Translate的Gettext适配器来解析mo文件。非常有效+缓存。你的电话就像是
echo $translation->_("Hello World");
哪个会找到该指定字符串的区域设置特定键。
答案 2 :(得分:0)