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

时间:2015-10-12 07:41:08

标签: plone linguaplone

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

我假设它位于: 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>

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

没有GUI可以更改ZMI的portal_language工具中的条目顺序(这就是我可以找到的将在页面上使用的顺序)。

但是:在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导入功能中的“导入上传的tarball”来应用更改的xml文件。

或者,您可以创建(并通过“测试”选项卡)这样的脚本(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进行语言协商等),所以我不知道太过深刻印象了。

答案 1 :(得分:2)

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

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

  1. 转到Zope( [您的网站网址] / manage_main
  2. 从那里进入Portal View Customizations( [your website url] /portal_view_customizations/registrations.html
  3. 从那里转到 plone.app.i18n.locales.languageselector Products.LinguaPlone.interfaces.ILinguaPloneProductLayer
  4. 从那里在<tal:language repeat="i python:[2,0,1]">标记之前添加这段代码 <li> ,其中[2,0,1]代表我选择的订单。如果你有一个更大的语言列表,那么它当然会像[0,1,2,3,4 ... e.t.c]那样你可以随意重新排列。
  5. 感谢@Ulrich Schwarz,尽管我无法使用你的建议。我相信可以通过多种方式进行,包括你建议的方式。