if language options specifies only one language always use this one independent of personal settings

This commit is contained in:
Helmut Merz 2012-04-06 15:40:58 +02:00
parent 5bccbc9f24
commit a673cbcead
2 changed files with 9 additions and 13 deletions

View file

@ -52,7 +52,7 @@ the default language using a LanguageInfo object that is similar to a view.
>>> from loops.i18n.browser import LanguageInfo >>> from loops.i18n.browser import LanguageInfo
>>> langInfo = LanguageInfo(topic01, TestRequest()) >>> langInfo = LanguageInfo(topic01, TestRequest())
>>> langInfo.availableLanguages >>> langInfo.availableLanguages
[] <AutoElement 'languages'>
>>> langInfo.language is None >>> langInfo.language is None
True True
>>> langInfo.defaultLanguage is None >>> langInfo.defaultLanguage is None

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de # Copyright (c) 2012 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -18,8 +18,6 @@
""" """
View extension for support of i18n content. View extension for support of i18n content.
$Id$
""" """
from zope import interface, component from zope import interface, component
@ -29,6 +27,7 @@ from zope.cachedescriptors.property import Lazy
from zope.i18n.interfaces import IUserPreferredLanguages from zope.i18n.interfaces import IUserPreferredLanguages
from zope.i18n.negotiator import negotiator from zope.i18n.negotiator import negotiator
from cybertools.meta.interfaces import IOptions
from loops.common import adapted from loops.common import adapted
@ -50,12 +49,7 @@ class LanguageInfo(object):
@Lazy @Lazy
def availableLanguages(self): def availableLanguages(self):
for opt in self.loopsRoot.options: return IOptions(self.loopsRoot).languages
if opt.startswith('languages:'):
return opt[len('languages:'):].split(',')
return []
# new implementation:
# return IOptions(self.context).i18n.languages
@Lazy @Lazy
def defaultLanguage(self): def defaultLanguage(self):
@ -64,10 +58,12 @@ class LanguageInfo(object):
@Lazy @Lazy
def language(self): def language(self):
available = self.availableLanguages or ('en', 'de')
if len(available) == 1:
return available[0]
lang = self.request.get('loops.language') lang = self.request.get('loops.language')
if lang is not None and lang in self.availableLanguages: if lang is not None and lang in available:
return lang return lang
available = self.availableLanguages or ('en', 'de',)
return (negotiator.getLanguage(available, self.request) return (negotiator.getLanguage(available, self.request)
or self.defaultLanguage) or self.defaultLanguage)
@ -95,7 +91,7 @@ class I18NView(object):
def checkLanguage(self): def checkLanguage(self):
session = ISession(self.request)[packageId] session = ISession(self.request)[packageId]
lang = session.get('language') lang = session.get('language') or self.languageInfo.language
if lang: if lang:
self.setLanguage(lang) self.setLanguage(lang)