Internationalization Plone翻译-i18ndude首选语言

Internationalization Plone翻译-i18ndude首选语言,internationalization,plone,buildout,Internationalization,Plone,Buildout,我希望这是我忽略的简单的事情。我们有3个Plone站点,它们的核心设置应该完全相同,只是与安装的某些产品和实际内容不同。我注意到我们的翻译在一个网站上工作,而不是在另外两个网站上。到目前为止,我没有发现任何差异 我们将i18ndude(版本3.3.3)与Plone 4.3.2一起使用。我们有自己领域的定制产品/类型,但不仅仅是那些不起作用的产品/类型,而是网站中的一切 为了测试,我尝试了抓取并打印浏览器的语言。我使用了context.REQUEST['LANGUAGE']和context.por

我希望这是我忽略的简单的事情。我们有3个Plone站点,它们的核心设置应该完全相同,只是与安装的某些产品和实际内容不同。我注意到我们的翻译在一个网站上工作,而不是在另外两个网站上。到目前为止,我没有发现任何差异

我们将i18ndude(版本3.3.3)与Plone 4.3.2一起使用。我们有自己领域的定制产品/类型,但不仅仅是那些不起作用的产品/类型,而是网站中的一切

为了测试,我尝试了抓取并打印浏览器的语言。我使用了
context.REQUEST['LANGUAGE']
context.portal\u languages.getPreferredLanguage()
。我在每次尝试中都将浏览器语言设置为“es”、“en”和“pt”,因为这些是我们目前支持的语言。每个站点中的站点语言都设置为英语。以下是我的测试结果:

Browser Language set to 'es':
Site A: returned 'es'
Site B: returned 'en'
Site C: returned 'en'

Browser Language set to 'en':
Site A: returned 'en'
Site B: returned 'en'
Site C: returned 'en'

Browser Language set to 'pt':
Site A: returned 'en'
Site B: returned 'en'
Site C: returned 'en'
站点A和站点B都在同一台服务器上,所以我不认为缺少服务器包。这两者的构建几乎是相同的,但差异只是在一对看起来与这个问题无关的鸡蛋上

我只是不明白为什么它根本没有检测到更新的浏览器语言,它只是默认回到了网站的首选语言。一个站点中的一个场景除外。奇怪的是,据我所知,这些都曾经起过作用,我不知道它们什么时候停止了

我确实检查了context.portal\u languages.getAvailableLanguages(),只是为了确保我正在使用的语言都在那里,而且都在那里。我还检查了locale和i18n目录的所有权和权限,这些都是跨站点的匹配项,设置准确

编辑

这是我快速编写的一个脚本,用于查看Plone获得的所有值:

pl = context.portal_languages
langs = [str(language) for language in pl.getAvailableLanguages().keys()]
print langs
print "Preferred: ", pl.getPreferredLanguage()

ts = context.translation_service
print "Request Language: ", context.REQUEST['LANGUAGE']
print "Accept Language: ", context.REQUEST['HTTP_ACCEPT_LANGUAGE']

return printed
这是运行此操作时的浏览器语言设置,按最高优先级列出:

  • 铂溴
  • pt
  • es
  • 恩美
  • 这是我的结果(站点A,似乎能识别西班牙语,但不能识别葡萄牙语):

    现场B和C的测试结果:

    ['en-mp', 'gv', 'gu', 'fr-dj', 'fr-gb', 'en-na', 'en-ng', 'en-nf', 'zh-hk', 'gd', 'pt-br', 'ga', 'gn', 'gl', 'en-nu', 'en-fm', 'en-ag', 'ms-my', 'ty', 'tw', 'tt', 'tr', 'ts', 'ko-kp', 'tn', 'to', 'tl', 'tk', 'th', 'ti', 'tg', 'te', 'zh-sg', 'ta', 'fr-mq', 'de', 'da', 'ar-ae', 'es-ni', 'dz', 'en-kn', 'fr-ml', 'dv', 'en-ms', 'fr-mg', 'fr-sc', 'fr-vu', 'qu', 'ar-qa', 'es-bo', 'en-nz', 'fr-bj', 'en-ws', 'fr-bi', 'zh', 'en-lr', 'fr-ch', 'fr-bf', 'za', 'fr-be', 'en-lc', 'fr-rw', 'zu', 'ch-mp', 'ar-ly', 'en-gb', 'en-nr', 'es-pr', 'tr-bg', 'en-gh', 'en-gi', 'fr-km', 'es-py', 'en-gm', 'es-pe', 'es-pa', 'en-gu', 'en-gy', 'sw-tz', 'ms-sg', 'wa', 'pt-st', 'wo', 'pt-ao', 'jv', 'fr-cd', 'ja', 'en-vu', 'es-ar', 'fr-td', 'fr-tg', 'da-dk', 'ch', 'co', 'en-vg', 'en-bz', 'ca', 'en-us', 'ce', 'en-ai', 'en-bm', 'en-vi', 'cy', 'en-bn', 'cs', 'cr', 'fr-ci', 'cv', 'cu', 'en-bb', 'ps', 'ln-cg', 'pt', 'en-au', 'zh-tw', 'es-mx', 'de-de', 'pa', 'es-ve', 'en-as', 'en-er', 'pi', 'de-dk', 'pl', 'en-sb', 'ch-gu', 'es-hn', 'en-sc', 'fr-nc', 'it-hr', 'ar-eg', 'mg', 'pt-pt', 'ml', 'mo', 'mn', 'mi', 'mh', 'mk', 'mt', 'ms', 'mr', 'fr-fr', 'hu-si', 'my', 'sv-fi', 'fr-re', 'en-pk', 've', 'vi', 'is', 'vk', 'iu', 'it', 'vo', 'ii', 'ik', 'en-io', 'fr-cm', 'io', 'ia', 'ie', 'id', 'ig', 'es-cu', 'hu-hu', 'es-cr', 'es-cl', 'es-co', 'fr-wf', 'pt-mz', 'en-il', 'it-it', 'de-be', 'fr', 'en-ke', 'fr-ga', 'fr-pf', 'es-do', 'ar-ps', 'fy', 'fr-gn', 'fr-pm', 'en-ki', 'en-ug', 'fa', 'fr-gp', 'ff', 'fi', 'fj', 'fo', 'ar-kw', 'bn-sg', 'ss', 'sr', 'sq', 'sw', 'sv', 'su', 'st', 'sk', 'si', 'sh', 'so', 'sn', 'sm', 'sl', 'sc', 'sa', 'sg', 'se', 'sd', 'bn-in', 'fr-mc', 'sv-se', 'ar-bh', 'lg', 'lb', 'la', 'ln', 'lo', 'ss-za', 'li', 'lv', 'lt', 'lu', 'sw-ke', 'en-bw', 'yi', 'en-ph', 'en-pn', 'yo', 'en-ie', 'en-pg', 'pt-cv', 'hr-ba', 'bn-bd', 'en-pr', 'en-pw', 'ss-sz', 'ar-iq', 'de-ch', 'ar-il', 'es-sv', 'el', 'eo', 'en', 'ar-dz', 'ee', 'tn-bw', 'es-gq', 'fr-gf', 'es-gt', 'eu', 'et', 'de-lu', 'es', 'ru', 'rw', 'zh-cn', 'ar-td', 'nl-nl', 'it-sm', 'it-si', 'rm', 'rn', 'ro', 'ar-sa', 'be', 'bg', 'ur-pk', 'ba', 'fr-ca', 'bm', 'bn', 'bo', 'bh', 'bi', 'fr-cg', 'fr-cf', 'es-us', 'el-cy', 'en-vc', 'sd-pk', 'ta-sg', 'br', 'bs', 'nl-an', 'sd-in', 'cs-cz', 'om', 'oj', 'fr-lb', 'en-fk', 'en-fj', 'oc', 'ln-cd', 'fr-lu', 'ar-om', 'de-at', 'os', 'or', 'tr-cy', 'xh', 'el-gr', 'de-li', 'ar-sy', 'en-jm', 'es-ec', 'ar-so', 'it-ch', 'en-ls', 'ar-sd', 'es-es', 'en-rw', 'tn-za', 'ar-jo', 'en-ky', 'en-bs', 'hz', 'ar-ma', 'da-gl', 'hy', 'en-mt', 'en-mu', 'nl-aw', 'en-mw', 'hr', 'en-tt', 'en-zw', 'ht', 'hu', 'en-to', 'ar-mr', 'hi', 'en-tk', 'ho', 'hr-hr', 'ha', 'en-tc', 'pt-gw', 'he', 'en-dm', 'fr-it', 'uz', 'en-et', 'ur-in', 'ur', 'tr-tr', 'uk', 'ms-bn', 'ug', 'aa', 'en-so', 'en-sl', 'ab', 'ae', 'en-sh', 'af', 'en-sg', 'ak', 'am', 'ko-kr', 'an', 'as', 'ar', 'en-sz', 'nl-be', 'ay', 'az', 'ar-lb', 'nl', 'nn', 'no', 'na', 'nb', 'nd', 'ne', 'ng', 'ny', 'ta-in', 'fr-yt', 'en-za', 'nr', 'nv', 'ar-ye', 'ar-tn', 'en-cm', 'en-ck', 'sr-ba', 'en-ca', 'ka', 'kg', 'en-gd', 'es-uy', 'kk', 'kj', 'ki', 'ko', 'kn', 'km', 'kl', 'ks', 'kr', 'fr-ad', 'kw', 'kv', 'ku', 'en-zm', 'ky', 'fr-ht', 'nl-sr']
    Preferred:  en
    Request Language:  en
    Accept Language:  pt-br,pt;q=0.8,es;q=0.6,en;q=0.4,en-us;q=0.2
    
    我刚刚注意到,
    portal\u languages
    的可用语言列表在这些站点之间有所不同。更奇怪的是,也许是对罪犯的暗示


    对不起,这篇文章太长了,我只是想尽可能多地提供信息

    在构建的实例部分搜索环境变量
    zope_i18n_allowed_languages
    ;它用于限制加载po文件的语言,以加快Zope启动时间并使用更少的内存

    在您的情况下,应按如下方式设置:

    [instance]
    ...
    environment-vars =
        PTS_LANGUAGES en es pt
        zope_i18n_allowed_languages en es pt
        zope_i18n_compile_mo_files true
    

    有关更多信息,请查看毛里茨·范里斯。

    我的猜测是正确的,因为我忽略了一些简单的事情。在这里发布我的发现

    在ZMI中,转到
    portal\u languages
    并检查以下设置:

    • 默认语言
    • 允许的语言
      • 应选择所有支持的语言
    • 谈判方案
      • 确保选中“使用浏览器语言请求协商”
    我的问题是在允许的语言选择列表中只选择了默认语言。我不知道它为什么会这样复位,或者如何复位。当使用语言设置控制面板时,我没有看到允许的语言选项,必须转到ZMI


    显然,所提到的更改也没有更新此设置

    我将这些变量添加到每个实例中,运行builout并重新启动。一切都没有改变。网站仍然没有被翻译,我的脚本显示我的浏览器语言为“en”。关于更多细节,我将用我正在运行的脚本和结果来编辑我的帖子。好吧,我觉得我可能误解了什么。如果在站点设置中,站点语言设置为英语,但我为所有产品提供西班牙语翻译,在上述环境变量中,如果用户访问我的站点时浏览器语言设置为西班牙语,他们应该看到西班牙语,对吗?因为我记得这取决于您如何定制
    portal\u languages
    工具,但你必须进入ZMI。有一些配置未暴露于Plone级别。
    [instance]
    ...
    environment-vars =
        PTS_LANGUAGES en es pt
        zope_i18n_allowed_languages en es pt
        zope_i18n_compile_mo_files true