第15章:国际化和本地化

15.1 gettext:消息编目
gettext模块提供了一个纯Python实现,与GNU gettext库兼容,用于完成消息转换和编目管理。利用Python源代码发布版提供的工具,可以从一组源文件中抽取消息,构建一个包含转换的消息编目,并使用这个消息编目在运行时为用户显示一个适当的消息。消息编目可以用来为程序提供国际化接口,使用适合用户的语言来显示消息。还可以英语其他消息定制,包括为不同包装器或合作伙伴的界面"换肤"。
说明:尽管标准库文档声称Python已经包含所有必要的工具,但是即使提供了适当的命令行选项,pygettext.py也无法抽取包装在ngettext调用中的消息。这些例子使用了GNU gettext工具集的xgettext,而不是pygettext.py。

15.1.1 转换工作流概述
建立和使用转换的过程包括5个步骤。
1.标识并标记源代码中包含待转换消息的字面量串。
首先在程序源代码中标识需要转换的消息,并标记字面量串,以便抽取程序发现这些字面量串。
2.抽取消息
标识源代码中可以转换的串之后,使用xgettext抽取出这些串,并创建一个.pot文件,或转换模板(translation template)。这个模板是一个文本文件,包含所有已标识串的副本及对应其转换的占位符。
3.转换消息。
将.pot文件的一个副本提供给转换器,将扩展名改为.po。这个.po文件是一个可编辑的源文件,被用作下一步编译的输入。转换器要更新这个文件中的首部文本,提供所有串的转换。
4.由转换“编译”消息编目。
转换器发回完整的.po文件时,使用,msgfmt将这个文本文件编译为二进制编目格式。运行时编目的查找代码将使用这个二进制格式。
5.运行时加载并启动适当的消息编目。
最后一步是向应用增加几行代码,配置和加载消息编目,并安装转换函数。对此有几种方法,各有优缺点。

第十五章:国际化和本地化-gettext:消息编目-转换工作流概述相关推荐

  1. java十五章_java:第十五章

    第十五章 字符串1.字符串(String)的定义 String str="内容"; String str=new String(); //内容为null String str=ne ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  3. Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. Visual C++ 2008入门经典 第十五章 在窗口中绘图

    /*第十五章 在窗口中绘图 主要内容: 1 Windows为窗口绘图提供的坐标系统 2 设置环境及其必要性 3 程序如何以及在窗口中绘图 4 如何定义鼠标消息的处理程序 5 如何定义自己的形状类 6 ...

  5. 第十五章 shell正则表达式

    第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正 ...

  6. 第二十五章补充内容 3 assert()宏

    //第二十五章补充内容 3 assert()宏 //有的编译器还提供了assert()宏,这个宏在许多书中被翻译为断言,它的作用是当assert()的参数为真时,返回真,假如参数值为假,那么它将执行某 ...

  7. 《Erlang程序设计》第十五章 ETS和DETS:大数据的存储机制

    第十五章 ETS和DETS:大数据的存储机制 Table of Contents 第十五章 ETS和DETS:大数据的存储机制 15.1 表的基本操作 创建和打开表 插入表 查找元组 释放表 15.2 ...

  8. 第十五章 异常检测-机器学习老师板书-斯坦福吴恩达教授

    第十五章 异常检测 15.1 问题动机 15.2 高斯分布 15.3 算法 15.4 完善和评估一个异常检测系统 15.5 异常检测 vs 监督学习 15.6 选择使用的特征 15.7 多元高斯分布 ...

  9. 25 linux ndk 头文件_正点原子Linux第二十五章RTC实时时钟实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第二十五章RTC实时时钟实验 实时时钟是很常用的一个外设 ...

最新文章

  1. 助力5G行业应用扬帆启航,第二届5G毫米波产业高峰论坛圆满召开
  2. Windows10~Tensorflow-GPU安装
  3. Android studio ButterKnife插件
  4. canvas中的getContext()方法 以及 webgl中的getContext()方法
  5. mysql增加从库_不停止MySQL服务增加从库的两种方式 (装载)
  6. 用 DomIt! XML 处理工作
  7. html radio 作用域,ionic 表单输入 ion-checkbox ion-radio ion-toggle ion-spinner
  8. (8)nginx:反向代理和负载均衡
  9. jQuery --- 简单操作合集
  10. 前端学习(2927):今日总结
  11. linux find显示文件的基本信息,命令find搜索文件,命令stat查看文件的详细信息
  12. Compile a native C Android application
  13. 六:SpringCloud-Config
  14. html5 graphics with svg css3,Using SVG with CSS3 and HTML5: Vector Graphics for Web Design
  15. 开菜鸟驿站需要什么条件?投入成本大概要多少?
  16. Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord
  17. 210920-车站问题
  18. java服务器间文件传输,java实现在多服务器之间的文件传输(Jsch)
  19. IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】持续更新,建议收藏
  20. Python Qt6快速入门-嵌入PyQtGraph图表

热门文章

  1. 计算机网络分组交换技术有,论计算机网络数据交换技术的发展
  2. 【观察】从智慧旅游到全域旅游,旅游产业的进化与变革
  3. 星际公民服务器位置,《星际公民》3.0测试服务器上线 游戏实际内容展示
  4. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制
  5. MySQL导出表结构表数据以及导入数据
  6. GRE配置详解和路由黑洞及检测机制
  7. 树莓派用Python+OpenCV做人脸识别
  8. vscode代码切换大小写的教程
  9. iOS 自动布局 Autolayout 报错:Unable to simultaneously satisfy constraints.
  10. Schema being registered is incompatible with an earlier schema