On creating a new Plone instance, you will be asked to set its title and description. If localized strings are used for the title field, they are literally displayed in <head><title>Title Here</title></head>. We can not easily switch the the title strings based on a chosen language.
Maybe plone.app.multilingual will take care of this issue, as a whole multilingual story. Anyway, I try to solve this issue by manipulating viewlets.
My theme is based on Sunburst, that uses main_template.pt as the starting point. plone.htmlhead
provider (viewlet manager) is where we need to hack into:
<div tal:replace="structure provider:plone.htmlhead" />
See plone.app.layout/viewlets/configure.zcml and we will find the related viewlet manager and viewlets:
<browser:viewletManager name="plone.htmlhead" provides=".interfaces.IHtmlHead" permission="zope2.View" ...> <browser:viewlet name="plone.htmlhead.title" manager=".interfaces.IHtmlHead" class=".common.TitleViewlet" ...>
Now we know TitleViewlet
in plone.app.layout/viewlets/common.py is the target:
class TitleViewlet(ViewletBase): index = ViewPageTemplateFile('title.pt') @property @memoize def page_title(self): ''' Get the page title. '''
Each page has its site_title
set as page_title
— portal_title
. With a little help from my friends -- zope.i18n.translate:
from zope.i18n import translate def update(self): ... self.site_title = u"%s — %s" % (self.page_title, translate('portal_title', domain='my.theme', context=self.request, default='I18N Site'))
Finally we need my.theme.po in the locales folder:
#: Default: I18N Site msgid "portal_title" msgstr "中文名稱"
No comments:
Post a Comment