【问题标题】:Plone Translations - i18ndude Preferred Language克隆翻译 - i18ndude 首选语言
【发布时间】:2014-12-06 03:30:37
【问题描述】:

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

我们将 i18ndude(版本 3.3.3)与 Plone 4.3.2 一起使用。我们确实有我们自己的域的自定义产品/类型,但不仅仅是那些不工作的,它是网站上的一切。

为了测试,我尝试抓取并打印浏览器的语言。我用context.REQUEST['LANGUAGE']context.portal_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_languages.getAvailableLanguages(),只是为了确保我正在使用的那些在里面,而且它们在里面。我还检查了 locales & 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

这是我运行时的浏览器语言设置,按最高优先级排列:

  1. pt-br
  2. es
  3. zh
  4. zh-CN

这是我的结果(站点 A,它似乎能识别西班牙语,但不能识别葡萄牙语):

['gv', 'gu', 'gd', 'ga', 'gn', 'gl', 'lg', 'lb', 'ty', 'ln', 'tw', 'tt', 'tr', 'ts', 'li', 'tn', 'to', 'tl', 'lu', 'tk', 'th', 'ti', 'tg', 'as', 'te', 'ta', 'yi', 'yo', 'de', 'ko', 'da', 'dz', 'dv', 'qu', 'kn', 'lv', 'el', 'eo', 'en', 'zh', 'ee', 'za', 'uk', 'eu', 'zu', 'es', 'ru', 'rw', 'kl', 'rm', 'rn', 'ro', 'bn', 'be', 'bg', 'ba', 'wa', 'wo', 'bm', 'jv', 'bo', 'bh', 'bi', 'br', 'bs', 'ja', 'om', 'oj', 'la', 'oc', 'kj', 'lo', 'os', 'or', 'xh', 'ch', 'co', 'ca', 'ce', 'cy', 'cs', 'cr', 'cv', 'cu', 'ps', 'pt', 'lt', 'pa', 'pi', 'ak', 'pl', 'hz', 'hy', 'an', 'hr', 'am', 'ht', 'hu', 'hi', 'ho', 'ha', 'he', 'mg', 'uz', 'ml', 'mo', 'mn', 'mi', 'mh', 'mk', 'ur', 'mt', 'ms', 'mr', 'ug', 'my', 'ki', 'aa', 'ab', 'ae', 've', 'af', 'vi', 'is', 'vk', 'iu', 'it', 'vo', 'ii', 'ay', 'ik', 'ar', 'km', 'io', 'et', 'ia', 'az', 'ie', 'id', 'ig', 'ks', 'nl', 'nn', 'no', 'na', 'nb', 'nd', 'ne', 'ng', 'ny', 'kw', 'nr', 'nv', 'kv', 'fr', 'ku', 'fy', 'fa', 'kk', 'ff', 'fi', 'fj', 'ky', 'fo', 'ka', 'kg', 'ss', 'sr', 'sq', 'sw', 'sv', 'su', 'st', 'sk', 'kr', 'si', 'sh', 'so', 'sn', 'sm', 'sl', 'sc', 'sa', 'sg', 'se', 'sd']
Preferred:  es
Request Language:  es
Accept Language:  pt-br,pt;q=0.8,es;q=0.6,en;q=0.4,en-us;q=0.2

站点 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_languages 的可用语言列表在这些站点之间有所不同。增加了奇怪,但也许是对罪魁祸首的暗示?

抱歉,帖子太长了,我只是想提供尽可能多的信息!

【问题讨论】:

    标签: internationalization plone buildout


    【解决方案1】:

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

    在 ZMI 中,转到 portal_languages 并检查以下设置:

    • 默认语言
    • 允许的语言
      • 应选择所有支持的语言。
    • 谈判方案
      • 确保选中“使用浏览器语言请求协商”

    我的问题是在允许的语言选择列表中只选择了默认语言。我不确定它为什么会这样或如何重置。使用语言设置控制面板时,我没有看到允许的语言选项,必须去 ZMI。

    显然hvelarde 提到的更改也没有更新此设置。

    【讨论】:

      【解决方案2】:

      在构建的实例部分中搜索环境变量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
      

      有关更多信息,请查看 Maurits van Rees 的Internationalization in Plone 3.3 and 4.0

      【讨论】:

      • 我将这些变量添加到我的每个实例中,运行构建并重新启动。什么也没有变。该网站仍未翻译,我的脚本将我的浏览器语言显示为“en”。有关更多详细信息,我将使用我正在运行的确切脚本和结果来编辑我的帖子。
      • 好吧,我觉得我可能误会了什么。如果在站点设置中,站点语言设置为英语,但我为所有产品和上述环境变量提供西班牙语翻译,如果用户访问我的站点时浏览器语言设置为西班牙语,他们应该以西班牙语看到它,对吗?
      • 我记得这取决于您如何自定义portal_languages 工具,但您必须进入ZMI。有一些配置没有暴露在 Plone 级别。
      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多