zoukankan      html  css  js  c++  java
  • Python本地化例子

     关键字:Python 3.4,gettext,本地化,Localization

    OS:Windows 7,Mac


    1. 创建一个locsample.py文件,文件内容如下,把所有需要本地化的字符串放到_()里面。
    # Python Localization Sample
    import os, gettext
    
    # Support localization
    _ = None
    def getUserLanguage():
        return "zh-CN"
    
    # Get loc string by language
    def getLocStrings():
        currentDir = os.path.dirname(os.path.realpath(__file__))
        return gettext.translation('resource', currentDir, [getUserLanguage(), "en-US"]).gettext 
    
    _ = getLocStrings()
    print(_("Hello"))
    注意: 注意‘resource’是资源文件的名字,例如:'resource.mo'。getUserLanguage() 返回需要显示的语言,"en-US"作为备份,如果找不到对应语言的资源文件,就使用"en-US"。

     
    2.pygettext.py在python安装目录下 Toolsi18n 文件夹里面。 使用pygettext.py从py文件中提取所有被标记成需要本地化的字符串,也就是在_()里面的字符串。 例如:
    运行“python pygettext.py -o resource.pot locsample.py”生成resource.pot。
     
    3. 把resource.pot改名为resource.po,为每种语言拷贝一份resource.po,zh-CN的resource.mo内容修改如下:
    # SOME DESCRIPTIVE TITLE.
    # Copyright (C) YEAR ORGANIZATION
    # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
    #
    msgid ""
    msgstr ""
    "Project-Id-Version: PACKAGE VERSION
    "
    "POT-Creation-Date: 2015-08-04 12:47+China Standard Time
    "
    "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
    "
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>
    "
    "Language-Team: LANGUAGE <LL@li.org>
    "
    "MIME-Version: 1.0
    "
    "Content-Type: text/plain; charset=utf-8
    "
    "Content-Transfer-Encoding: 8bit
    "
    "Generated-By: pygettext.py 1.5
    "
    
    
    #:
    msgid "Hello"
    msgstr "你好"

    en-US的resource.mo内容如下:

    # SOME DESCRIPTIVE TITLE.
    # Copyright (C) YEAR ORGANIZATION
    # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
    #
    msgid ""
    msgstr ""
    "Project-Id-Version: PACKAGE VERSION
    "
    "POT-Creation-Date: 2015-08-04 12:47+China Standard Time
    "
    "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
    "
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>
    "
    "Language-Team: LANGUAGE <LL@li.org>
    "
    "MIME-Version: 1.0
    "
    "Content-Type: text/plain; charset=utf-8
    "
    "Content-Transfer-Encoding: 8bit
    "
    "Generated-By: pygettext.py 1.5
    "
    
    
    #:
    msgid "Hello"
    msgstr "Hello"
    4. 为各种语言创建gettext可读的.mo文件,使用msgfmt.py, 例如: 
    运行"python msgfmt.py -o resource.mo resource.po"生成resource.mo。mo文件是一个二进制文件。
     
    5.把所有文件按照以下文件夹结构放置。

    6. 运行locsample.py,输出:
    你好
     
    代码:
     
  • 相关阅读:
    Windows删除git本地记住的密码
    C++ fmt库的安装和测试
    仿照struct is_integral 实现struct not_int
    folly库net库udp小例子
    Java阻塞队列BlockingQueue
    正则表达式必知必会摘要
    正则表达式匹配IP地址
    SimpleDateFormat线程安全性测试与解决方案
    Java8 HashMap中哈希桶(table)数组的索引位置
    socket网络编程--基础应用篇
  • 原文地址:https://www.cnblogs.com/ldlchina/p/4708442.html
Copyright © 2011-2022 走看看