代码之家  ›  专栏  ›  技术社区  ›  Itay Moav -Malimovka

存储网站的多种语言版本的最佳方法是什么?

  •  3
  • Itay Moav -Malimovka  · 技术社区  · 14 年前

    我的网站(在Linux服务器上)需要支持多种语言。

    1. 每种语言的不同视图文件
    2. 葛泰克斯
    3. PHP文件中的硬编码字(如phpBB)
    3 回复  |  直到 14 年前
        1
  •  2
  •   chryss    14 年前

    对于网站,您确实需要考虑以下几类内容进行本地化:

    1. 每个页面(或页面的子组)共有的较小的内容块,如标语、广告语、联系人表单周围的文本,以及导入的内容,如新闻或广告和附属链接。其中一些可能只出现在一种语言中(例如,如果您在某些地区不提供某些服务,或者 例如,针对特定语言的语言适当的导入内容:最好删除某个元素,而不是向可能不会说英语的人提供英语)。
    2. 纯功能元素,如“单击此处发表评论”、“更多…”、高级导航等,它们有时是模板的一部分。其中一些可能是内部图像。

    为1。主要决定是否使用CMS。如果是,您绝对需要选择一个支持多种语言。我并不了解PHP CMS的最新发展,但Django CMS的几个应用程序(Django-CMS-2,FeinCMS)支持多语言内容。例如,不要忘记日期戳也需要本地化(或者您可以通过选择ISO日期来解决这个问题,尽管这并不总是可能的)。如果您不使用CMS,并且所有内容都在HTML文件中,那么 gettext 方法是,按语言将.mo文件(以及脱机.po文件)保存在文件夹中。

    如果 你有一个很好的多语言支持的CMS,得到尽可能多的CMS内。原因是这些位确实发生了变化,您希望尽可能少地编辑模板。如果你自己写代码的话,想办法导出每种语言的CMS字符串,把它们交给翻译人员。否则,再说一遍, 获取文本 if $language = X display content1 ... )

    对于3.,如果在模板中,请使用 获取文本

    你绝对要避免的是在HTML文件中保存大量的文本内容,这将是一个噩梦。

    编辑:关于gettext、.po和.mo文件的所有内容都在 GNU gettext manual (比你想知道的要多)或者一个稍微过时但更友好的人 tutorial PHP gettext functions ,以及 Zend Locale documentation

        2
  •  1
  •   meder omuraliev    14 年前

    我建议使用Zend\u Translate的Gettext适配器来解析mo文件。非常高效+缓存。你的电话会是

    echo $translation->_("Hello World");
    

    它将为指定的字符串查找特定于语言环境的键。