示例#1
0
def get_language_from_request(request, settings):
    #check session first
    if hasattr(request, 'session'):
        lang = request.session.get('uliweb_language')
        if lang:
            return lang

    lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME)
    if lang:
        return lang

    accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None)
    if not accept:
        return settings.I18N.get('LANGUAGE_CODE')
    languages = settings.I18N.get('SUPPORT_LANGUAGES', [])
    for accept_lang, unused in parse_accept_lang_header(accept):
        if accept_lang == '*':
            break

        normalized = format_locale(accept_lang)
        if not normalized:
            continue
        
        if normalized in languages:
            return normalized

    return settings.I18N.get('LANGUAGE_CODE')
示例#2
0
def get_language_from_request(request, settings):
    #check query_string, and the key will be defined in settings.ini
    #now only support GET method
    debug = '__debug__' in request.GET
    log = getLogger(__name__)
    url_lang_key = settings.get_var('I18N/URL_LANG_KEY')
    if url_lang_key:
        lang = request.GET.get(url_lang_key)
        if lang:
            if debug:
                log.info('Detect from URL=%s, lang_key=%s, lang=%s' %
                         (request_url(), url_lang_key, lang))
            return lang

    #check session
    if hasattr(request, 'session'):
        lang = request.session.get('uliweb_language')
        if lang:
            if debug:
                log.info('Detect from session=%s, lang=%s' %
                         ('uliweb_language', lang))
            return lang

    #check cookie
    lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME)
    if lang:
        if debug:
            log.info('Detect from cookie=%s, lang=%s' %
                     (settings.I18N.LANGUAGE_COOKIE_NAME, lang))
        return lang

    #check browser HTTP_ACCEPT_LANGUAGE head
    accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None)
    if not accept:
        if debug:
            log.info('Detect from settings of LANGUAGE_CODE=%s' % lang)
        return settings.I18N.get('LANGUAGE_CODE')
    languages = settings.I18N.get('SUPPORT_LANGUAGES', [])
    for accept_lang, unused in parse_accept_lang_header(accept):
        if accept_lang == '*':
            break

        normalized = format_locale(accept_lang)
        if not normalized:
            continue

        if normalized in languages:
            if debug:
                log.info('Detect from HTTP Header=%s, lang=%s' %
                         ('HTTP_ACCEPT_LANGUAGE', normalized))
            return normalized

    #return default lanaguage
    lang = settings.I18N.get('LANGUAGE_CODE')
    if debug:
        log.info('Detect from settings of LANGUAGE_CODE=%s' % lang)
    return lang
示例#3
0
def get_language_from_request(request, settings):
    #check query_string, and the key will be defined in settings.ini
    #now only support GET method
    debug = '__debug__' in request.GET
    log = getLogger(__name__)
    url_lang_key = settings.get_var('I18N/URL_LANG_KEY')
    if url_lang_key:
        lang = request.GET.get(url_lang_key)
        if lang:
            if debug:
                log.info('Detect from URL=%s, lang_key=%s, lang=%s' %
                         (request_url(), url_lang_key, lang))
            return lang

    #check session
    if hasattr(request, 'session'):
        lang = request.session.get('uliweb_language')
        if lang:
            if debug:
                log.info('Detect from session=%s, lang=%s' %
                         ('uliweb_language', lang))
            return lang

    #check cookie
    lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME)
    if lang:
        if debug:
            log.info('Detect from cookie=%s, lang=%s' %
                     (settings.I18N.LANGUAGE_COOKIE_NAME, lang))
        return lang

    #check browser HTTP_ACCEPT_LANGUAGE head
    accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None)
    if not accept:
        if debug:
            log.info('Detect from settings of LANGUAGE_CODE=%s' % lang)
        return settings.I18N.get('LANGUAGE_CODE')
    languages = settings.I18N.get('SUPPORT_LANGUAGES', [])
    for accept_lang, unused in parse_accept_lang_header(accept):
        if accept_lang == '*':
            break

        normalized = format_locale(accept_lang)
        if not normalized:
            continue
        
        if normalized in languages:
            if debug:
                log.info('Detect from HTTP Header=%s, lang=%s' %
                         ('HTTP_ACCEPT_LANGUAGE', normalized))
            return normalized

    #return default lanaguage
    lang = settings.I18N.get('LANGUAGE_CODE')
    if debug:
        log.info('Detect from settings of LANGUAGE_CODE=%s' % lang)
    return lang
示例#4
0
def make_select_languages(languages):
    from uliweb.i18n import get_language, format_locale
    from uliweb.contrib.i18n import LANGUAGES

    lang = get_language()

    s = []
    s.append('''<script type="text/javascript">
function SetCookie( name, value, expires, path, domain, secure ) 
{
var today = new Date();
today.setTime( today.getTime() );
path='/';
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
( ( path ) ? ";path=" + path : "" ) + 
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
window.location.reload();
}
</script>''')
    s.append(
        '''<form class="lang_dropdown" action="javascript:SetCookie('uliweb_language',this.document.changelang.lang.value)" name="changelang" method="post">
<label for="lang">Change Language:</label>
<select onchange="this.form.submit()" id="lang" name="lang">''')
    for k in languages:
        k = format_locale(k)
        v = LANGUAGES.get(k, '')
        if not v:
            continue
        if k == lang:
            select = 'selected="selected" '
        else:
            select = ''
        s.append('<option %svalue="%s">%s</option>' % (select, k, v))
    s.append('''</select>
</form>''')
    return ''.join(s)
示例#5
0
def make_select_languages(languages):
    from uliweb.i18n import get_language, format_locale
    from uliweb.contrib.i18n import LANGUAGES
    
    lang = get_language()
    
    s = []
    s.append('''<script type="text/javascript">
function SetCookie( name, value, expires, path, domain, secure ) 
{
var today = new Date();
today.setTime( today.getTime() );
path='/';
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
( ( path ) ? ";path=" + path : "" ) + 
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
window.location.reload();
}
</script>''')
    s.append('''<form class="lang_dropdown" action="javascript:SetCookie('uliweb_language',this.document.changelang.lang.value)" name="changelang" method="post">
<label for="lang">Change Language:</label>
<select onchange="this.form.submit()" id="lang" name="lang">''')
    for k in languages:
        k = format_locale(k)
        v = LANGUAGES.get(k, '')
        if not v:
            continue
        if k == lang:
            select = 'selected="selected" '
        else:
            select = ''
        s.append('<option %svalue="%s">%s</option>' % (select, k, v))
    s.append('''</select>
</form>''')
    return ''.join(s)
示例#6
0
def get_language_from_request(request, settings):
    #check query_string, and the key will be defined in settings.ini
    #now only support GET method
    url_lang_key = settings.get_var('I18N/URL_LANG_KEY')
    if url_lang_key:
        lang = request.GET.get(url_lang_key)
        if lang:
            return lang

    #check session
    if hasattr(request, 'session'):
        lang = request.session.get('uliweb_language')
        if lang:
            return lang

    #check cookie
    lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME)
    if lang:
        return lang

    #check browser HTTP_ACCEPT_LANGUAGE head
    accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None)
    if not accept:
        return settings.I18N.get('LANGUAGE_CODE')
    languages = settings.I18N.get('SUPPORT_LANGUAGES', [])
    for accept_lang, unused in parse_accept_lang_header(accept):
        if accept_lang == '*':
            break

        normalized = format_locale(accept_lang)
        if not normalized:
            continue
        
        if normalized in languages:
            return normalized

    #return default lanaguage
    return settings.I18N.get('LANGUAGE_CODE')
示例#7
0
def get_language_from_request(request, settings):
    #check query_string, and the key will be defined in settings.ini
    #now only support GET method
    url_lang_key = settings.get_var('I18N/URL_LANG_KEY')
    if url_lang_key:
        lang = request.GET.get(url_lang_key)
        if lang:
            return lang

    #check session
    if hasattr(request, 'session'):
        lang = request.session.get('uliweb_language')
        if lang:
            return lang

    #check cookie
    lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME)
    if lang:
        return lang

    #check browser HTTP_ACCEPT_LANGUAGE head
    accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None)
    if not accept:
        return settings.I18N.get('LANGUAGE_CODE')
    languages = settings.I18N.get('SUPPORT_LANGUAGES', [])
    for accept_lang, unused in parse_accept_lang_header(accept):
        if accept_lang == '*':
            break

        normalized = format_locale(accept_lang)
        if not normalized:
            continue

        if normalized in languages:
            return normalized

    #return default lanaguage
    return settings.I18N.get('LANGUAGE_CODE')
示例#8
0
文件: __init__.py 项目: znanl/uliweb
from uliweb.i18n import format_locale
from uliweb.i18n import ugettext_lazy as _

_LANGUAGES = {
    'en_US':_('English'), 
    'zh_CN':_('Simplified Chinese'),
}
LANGUAGES = {}
for k, v in _LANGUAGES.items():
    LANGUAGES[format_locale(k)] = v

def startup_installed(sender):
    """
    @LANGUAGE_CODE
    """
    import os
    from uliweb.core.SimpleFrame import get_app_dir
    from uliweb.i18n import install, set_default_language
    from uliweb.utils.common import pkg, expand_path
    
    path = pkg.resource_filename('uliweb', '')
    _dirs = []
    for d in sender.settings.get_var('I18N/LOCALE_DIRS', []):
        _dirs.append(expand_path(d))
    localedir = ([os.path.normpath(sender.apps_dir + '/..')] + 
        [get_app_dir(appname) for appname in sender.apps] + [path] + _dirs)
    install('uliweb', localedir)
    set_default_language(sender.settings.I18N.LANGUAGE_CODE)
    
def prepare_default_env(sender, env):
    from uliweb.i18n import ugettext_lazy