我如何更改 Zope 中 Plone 的 LinguaPlone 语言按钮的顺序?

How can I change the order of Plone's LinguaPlone language buttons inside Zope?

例如,我想将语言按钮呈现给用户的顺序从英语-中文-法语更改为中文-法语-英语。

我假设它位于: zope.interface.interface-plone.app.i18n.locales.languageselector 里面是 portal_view_customizations/registrations.html.

更具体地说,我假设它与这段脚本有关:

> <tal:nonflag condition="python:not showFlags or not flag" replace="name">
>      language name 
> </tal:nonflag>

但是我仍然不知道我应该怎么写或者写什么来控制屏幕上的语言顺序。

如有任何帮助,我们将不胜感激。

ZMI 的 portal_language 工具中没有更改条目顺序的 GUI(据我所知,这是将在页面上使用的顺序)。

但是:在 portal_setup 中,您可以导出语言设置,这将为您提供一个文件 portal_languages.xml,包裹在一个存档中,内容类似于以下内容:

<?xml version="1.0"?>
<object>
 <default_language value="en"/>
 <use_path_negotiation value="False"/>
 <use_cookie_negotiation value="True"/>
 <set_cookie_everywhere value="False"/>
 <use_request_negotiation value="True"/>
 <use_cctld_negotiation value="False"/>
 <use_content_negotiation value="True"/>
 <use_combined_language_codes value="False"/>
 <display_flags value="False"/>
 <start_neutral value="False"/>
 <use_subdomain_negotiation value="False"/>
 <authenticated_users_only value="False"/>
 <supported_langs>
  <element value="de"/>
  <element value="da"/>
  <element value="it"/>
  <element value="en"/>
  <element value="fr"/>
  <element value="cs"/>
 </supported_langs>
</object>

您可以更改 <supported_langs> 中行的顺序,将文件放回存档,然后在 portal_setup 的导入函数中使用 "import uploaded tarball" 来应用更改后的 xml 文件.

或者,您可以创建(并且 运行 通过 "test" 选项卡)这样的脚本 (Python),它将首先删除然后重新添加语言按所需顺序依次递增。 (如果您使用不同的文件夹和根语言切换器,您可能需要在之后再次 运行 @@language-setup-folders 步骤。)

# Return a string identifying this script.
print "This is the", script.meta_type, '"%s"' % script.getId(),
if script.title:
    print "(%s)" % html_quote(script.title),
print "in", container.absolute_url()

pl = context.portal_languages
pl.removeSupportedLanguages(pl.getSupportedLanguages())
print pl.supported_langs
pl.addSupportedLanguage('de')
pl.addSupportedLanguage('fr')
pl.addSupportedLanguage('da')
pl.addSupportedLanguage('en')
print pl.supported_langs

return printed

我尝试直接通过记录的 manage_setLanguageSettings 方法,但是,至少在 4.3.2 中,这需要您显式设置所有其他参数(使用 cookie 进行语言协商等),所以我并没有留下太深的印象。

所以我找到了一个有效的解决方案!

要在您使用 Plone CMS 的网站上重新排列语言顺序,您需要执行以下步骤:

  1. 转到 Zope ([你的网站 url]/manage_main)
  2. 从那里转到 Portal View Customizations([您的网站 url]/portal_view_customizations/registrations。html
  3. 从那里去 plone.app.i18n.locales.languageselector (Products.LinguaPlone.interfaces.ILinguaPloneProductLayer)
  4. 从那里在 <li> 标签前添加这段代码 <tal:language repeat="i python:[2,0,1]">,其中 [2,0,1] 代表我选择的顺序。如果你有一个更大的语言列表,那么它当然会像 [0,1,2,3,4...e.t.c] 这样你可以根据需要重新排列。

谢谢你@Ulrich Schwarz,尽管我无法使用你的建议让它工作。我相信可以通过多种方式实现,包括您建议的方式。