千家信息网

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

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关如何进行openstack horizon的国际化分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。概念I18N 国际化,
千家信息网最后更新 2026年10月31日如何进行openstack horizon的国际化分析

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

概念

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',    ]

步骤:

  1. TEMPLATE_CONTEXT_PROCESSORS 加入django.core.context_processors.i18n

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

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

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

  5. USE_I18N 设置为True

html中使用

{% load i18n %} #启用i18n Learning Center {% trans "Welcome You" %}--Learn Center{% 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\S+?)/$', 'django.views.i18n.javascript_catalog'),   #定义js上的i18n]

html文件中

  #引入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文件区别:

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

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

语言编译

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

cd horizon && django-admin compilemessagescd openstack_dashboard && django-admin compilemessages

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

语言切换

{% csrf_token %}

补充

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的国际化分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 语言 国际 命令 字符 字符串 头部 缩写 网站 分析 全局 内容 变量 引号 文章 更多 步骤 用户 目录 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技图片 南京欣网互联网络科技有限公司 河南云网互联网络科技有限公司 中国互联网科技工作委员会毛军 互联网科技金融 互联网科技论坛 玖二柒互联网科技公司待遇 广州慧亚互联网科技怎么样 移动互联网科技股 汽车互联网创新科技园 受益于互联网科技的高速发展 千方科技属于互联网企业吗 西安小鹰速贷互联网科技有限公司 明优互联网科技有限公司 广东工业互联网大赛深圳学泰科技 互联网科技平台产品运营 互联网科技职业技能培训学校 互联网科技和医药行业 数字科技和互联网金融哪个好 知域互联网科技有限公司官网 上海挚品互联网科技有限公司 智网互联网科技 贷财互联网科技 四川狮子座互联网科技 移动互联网年度科技创新 群盈汇互联网科技有限公司 滨湖区互联网智能科技产品有哪些 互联网科技资金流入 领航科技大厦互联网公司 科技互联网企业在行动
0