if language options specifies only one language always use this one independent of personal settings
This commit is contained in:
		
							parent
							
								
									5bccbc9f24
								
							
						
					
					
						commit
						a673cbcead
					
				
					 2 changed files with 9 additions and 13 deletions
				
			
		|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue