在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何进行openstack horizon的国际化分析

145次阅读
没有评论

共计 3145 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章将为大家详细讲解有关如何进行 openstack horizon 的国际化分析,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

概念

I18N 国际化,是”Internationalization”的缩写
G11N 全球化,是“Globalization”的缩写
L10N 本地化,是“Localization”的缩写

原理

Django 的翻译机制是使用 GNU gettext (http://www.gnu.org/software/gettext/),具体为 Python 标准模块 gettext。
通过 gettext –version 验证是否可用

开启国际化

openstack_dashboard\setting.py

 MIDDLEWARE_CLASSES = (
  django.contrib.sessions.middleware.SessionMiddleware ,
  django.middleware.locale.LocaleMiddleware , # 需要放在 SessionMiddleware 之后
  django.middleware.common.CommonMiddleware ,
 )
 TEMPLATE_CONTEXT_PROCESSORS = (
  django.core.context_processors.i18n , # 启用 i18n
  django.contrib.auth.context_processors.auth ,
 )
 LANGUAGES = ( ( en ,  English),
 (zh-cn ,  Simplified Chinese)
 )
 LANGUAGE_CODE =  zh-cn  # 网站默认语言
 LANGUAGE_COOKIE_NAME =  horizon_language 
 USE_I18N = True # 开启 i18n
 USE_L10N = True # 开启 l10n
 LOCALE_PATHS = [
  django_start/locale ,
 ]

步骤:

TEMPLATE_CONTEXT_PROCESSORS 加入 django.core.context_processors.i18n

MIDDLEWARE_CLASSES 中加入 django.middleware.locale.LocaleMiddleware,注意:
它要放在 SessionMiddleware 和 CacheMiddleware 的后面,其他中间件的前面

LANGUAGE_CODE 设置缺省的网站语言,如 en, zh-cn,it, de-at, es, pt-br

LANGUAGES 设置网站所支持的所有语言,如 ((en , u English),(zh-cn ,u 中文))

USE_I18N 设置为 True

html 中使用

{% load i18n %} # 启用 i18n
 title  Learning Center {% trans  Welcome You  %}--Learn Center /title 
{% blocktrans %}This will have {{ value }} inside.{% endblocktrans %}

在 {% trans %} 中不允许使用模板中的变量,只能使用单引号或双引号中的字符串。如果翻译时需要用到变量(占位符),可以使用 {% blocktrans %}

py 中使用

from django.utils.translation import ugettext_lazy as _
CONSUMER_CHOICES = ( ( back-end , _( back-end)),
)

可参考:openstack_dashboard/api/cinder.py

js 中使用

urls.py 文件

urlpatterns = [ url(r ^admin/ , include(admin.site.urls)),
 url(r ^jsi18n/(?P packages \S+?)/$ ,  django.views.i18n.javascript_catalog ), # 定义 js 上的 i18n
]

html 文件中

script type= text/javascript  src= /jsi18n/django_start+django_i18n /script  # 引入 js 文件,多个 app 用 + 分隔 

js 文件中

var i18njs = gettext(Welcome  # 直接使用全局的 gettext 即可 

生成语言

在 django app 目录执行如下命令,将自动检索需要翻译的文件并生成对应的 po 文件

django-admin.py makemessages -l zh_CN #
django-admin.py makemessages -d djangojs -l zh_CN

django.po 和 djangojs.po 文件区别:

py、html 文件中的需要翻译的字符串运行上述命令会自动识别,并添加到 django.po 文件中

外部 js 文件中需要翻译的字符串需要手动创建 djangojs.po 文件,并将翻译字符串写进去

语言编译

语言翻译完成后,通过如下命令将 django.po 和 djangojs.po 编译为.mo 文件

cd horizon   django-admin compilemessages
cd openstack_dashboard   django-admin compilemessages

编译完成后需要重启项目才能使多语言生效。

语言切换

form action= {% url  set_language  %}  method= post 
{% csrf_token %}
 input name= next  type= hidden  value= {{ redirect_to }}  / 
 select name= language  
{% get_language_info_list for LANGUAGES as languages %} 
{% for language in languages %} 
 option value= {{ language.code }} {% if language.code == LANGUAGE_CODE %} selected= selected {% endif %}  
{{ language.name_local }} ({{ language.code }}) 
 /option  
{% endfor %} 
 /select  
 input type= submit  value= Go  /  
 /form

补充 session db

需要用数据库保存 session,在工程目录中执行如下命令产生 django_session。

python manage.py syncdb

确定语言步骤

LocaleMiddleware 按照如下算法确定用户的语言:
1、在当前用户的 session 的中查找 django_language 键;可以通过 LANGUAGE_COOKIE_NAME 改变,比如:LANGUAGE_COOKIE_NAME = horizon_language
2、它会找寻一个 cookie
3、还找不到的话,它会在 HTTP 请求头部里查找 Accept-Language,该头部是你的浏览器发送的,并且按优先顺序告诉服务器你的语言偏好。
Django 会尝试头部中的每一个语种直到它发现一个可用的翻译。
4、以上都失败了的话, 就使用全局的 LANGUAGE_CODE 设定值。

关于如何进行 openstack horizon 的国际化分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3145字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 日本一区二区三区精品国产 | 色综合天天综合网国产国产人 | 黄色毛片免费进入 | 亚洲国产午夜精品理论片 | 亚洲日韩乱码中文无码蜜桃臀网站 | 成人精品视频在线观看播放 | 国产又色又爽又黄的 | 亚洲欧美精品天堂久久综合一区 | 亚洲人成电影在在线观看网色 | 国产精品成人一区二区 | 国产精品日本亚洲777 | 特级全黄一级毛片视频 | 国产亚洲人成网站在线观看 | 日产无人区一线二线三线新版 | 国产精品国语自产拍在线观看 | 国产精品亚洲二线在线播放 | 国产av一区二区三区最新精品 | a级毛片视频免费观看 | 88国产精品视频一区二区三区 | 国产一级精品高清一级毛片 | 国产视频在线观看免费 | 少妇熟女天堂网av | 末成年女av片一区二区 | 日本一级免费 | 日韩精品欧美亚洲高清有无 | 久草免费福利资源 | 91免费国产高清观看 | 在线成人综合色一区 | 国产激情片 | 日本嫩草 | 男男黄gay片免费网站www | 國产一二三内射在线看片 | 久久久久久人妻毛片a片 | 国产午夜福利片在线观看 | 2021午夜国产精品福利 | 亚洲欧美一区二区三区在线观看 | 亚洲性在线| 国产男人天堂 | 免费久久精品视频 | 亚洲成人影院在线 | 草草影院ccyy国产日本欧美 |