zoukankan      html  css  js  c++  java
  • django的多语言国际化

    介绍

    Django 支持国际化,多语言。Django的国际化是默认开启的,如果您不需要国际化支持,那么您可以在您的设置文件中设置 USE_I18N = False,那么Django会进行一些优化,不加载国际化支持机制。

    NOTE: 18表示Internationalization这个单词首字母I和结尾字母N之间的字母有18个。I18N就是Internationalization(国际化)的意思。

    Django 完全支持文本翻译,日期时间数字格式和时区。

    本质上讲,Django做了两件事:

    1. 它允许开发者指定要翻译的字符串
    2. Django根据特定的访问者的偏好设置 进行调用相应的翻译文本。

    开启国际化的支持,需要在settings.py文件中设置

    MIDDLEWARE_CLASSES = (
        ...
        'django.middleware.locale.LocaleMiddleware',
    )
     
    LANGUAGE_CODE = 'en'
    TIME_ZONE = 'UTC'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
     
    LANGUAGES = (
        ('en', ('English')),
        ('zh-cn', ('中文简体')),
        ('zh-tw', ('中文繁體')),
    )
     
    # 翻译文件所在目录,需要手工创建
    LOCALE_PATHS = (
        os.path.join(BASE_DIR, 'locale'),
    )
     
    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        "django.core.context_processors.i18n",
    )
    

    注意:Django 1.9 及以上版本中,语言的代码发生变化

    LANGUAGES = (
        ('en', ('English')),
        ('zh-hans', ('中文简体')),
        ('zh-hant', ('中文繁體')),
    )
    # en,zh-hans就是语言的代码
    

    生成需要翻译的文件

    会自动将你要翻译的地方都更新到.po文件中

    Django 1.8及以下的版本

    python manage.py makemessages -l zh-cn
    python manage.py makemessages -l zh-tw
    

    Django 1.9 及以上版本要改成

    python manage.py makemessages -l zh_hans
    python manage.py makemessages -l zh_hant
    

    手工翻译 locale 中的 django.po

    ...
     
    #: .	utorialmodels.py:23
    msgid "created at"  # 要翻译的语句
    msgstr "创建于"      # 翻译后的语句
     
    #: .	utorialmodels.py:24
    msgid "updated at"
    msgstr "更新于"
     
    ...
    

    编译一下,这样翻译才会生效

    python manage.py compilemessages
    

    如果翻译不生效,请检查你的语言包的文件夹是不是有 中划线,请用下划线代替它

    比如 zh-hans 改成 zh_hans (但是要注意 setttings.py 中要用 中划线,不要也改了

  • 相关阅读:
    java HTTP代码示例
    eclipse创建文件package,source folder和folder区别及相互转换
    spring 及 spring boot 资源文件配置
    深入理解Java枚举类型(enum)
    Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell
    JAXB和XStream比较
    java将配置信息写在数据库(利用反射)
    【大数据实战】Logstash采集->Kafka->ElasticSearch检索
    Linux 安装rabbitmq 遇到的一些问题
    Linux 下的jdk安装
  • 原文地址:https://www.cnblogs.com/liuweida/p/12081221.html
Copyright © 2011-2022 走看看