第十五章:国际化和本地化-gettext:消息编目-转换工作流概述
第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:消息编目-转换工作流概述相关推荐
- java十五章_java:第十五章
第十五章 字符串1.字符串(String)的定义 String str="内容"; String str=new String(); //内容为null String str=ne ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Visual C++ 2008入门经典 第十五章 在窗口中绘图
/*第十五章 在窗口中绘图 主要内容: 1 Windows为窗口绘图提供的坐标系统 2 设置环境及其必要性 3 程序如何以及在窗口中绘图 4 如何定义鼠标消息的处理程序 5 如何定义自己的形状类 6 ...
- 第十五章 shell正则表达式
第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正 ...
- 第二十五章补充内容 3 assert()宏
//第二十五章补充内容 3 assert()宏 //有的编译器还提供了assert()宏,这个宏在许多书中被翻译为断言,它的作用是当assert()的参数为真时,返回真,假如参数值为假,那么它将执行某 ...
- 《Erlang程序设计》第十五章 ETS和DETS:大数据的存储机制
第十五章 ETS和DETS:大数据的存储机制 Table of Contents 第十五章 ETS和DETS:大数据的存储机制 15.1 表的基本操作 创建和打开表 插入表 查找元组 释放表 15.2 ...
- 第十五章 异常检测-机器学习老师板书-斯坦福吴恩达教授
第十五章 异常检测 15.1 问题动机 15.2 高斯分布 15.3 算法 15.4 完善和评估一个异常检测系统 15.5 异常检测 vs 监督学习 15.6 选择使用的特征 15.7 多元高斯分布 ...
- 25 linux ndk 头文件_正点原子Linux第二十五章RTC实时时钟实验
1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第二十五章RTC实时时钟实验 实时时钟是很常用的一个外设 ...
最新文章
- 助力5G行业应用扬帆启航,第二届5G毫米波产业高峰论坛圆满召开
- Windows10~Tensorflow-GPU安装
- Android studio ButterKnife插件
- canvas中的getContext()方法 以及 webgl中的getContext()方法
- mysql增加从库_不停止MySQL服务增加从库的两种方式 (装载)
- 用 DomIt! XML 处理工作
- html radio 作用域,ionic 表单输入 ion-checkbox ion-radio ion-toggle ion-spinner
- (8)nginx:反向代理和负载均衡
- jQuery --- 简单操作合集
- 前端学习(2927):今日总结
- linux find显示文件的基本信息,命令find搜索文件,命令stat查看文件的详细信息
- Compile a native C Android application
- 六:SpringCloud-Config
- html5 graphics with svg css3,Using SVG with CSS3 and HTML5: Vector Graphics for Web Design
- 开菜鸟驿站需要什么条件?投入成本大概要多少?
- Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord
- 210920-车站问题
- java服务器间文件传输,java实现在多服务器之间的文件传输(Jsch)
- IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】持续更新,建议收藏
- Python Qt6快速入门-嵌入PyQtGraph图表
热门文章
- 计算机网络分组交换技术有,论计算机网络数据交换技术的发展
- 【观察】从智慧旅游到全域旅游,旅游产业的进化与变革
- 星际公民服务器位置,《星际公民》3.0测试服务器上线 游戏实际内容展示
- Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制
- MySQL导出表结构表数据以及导入数据
- GRE配置详解和路由黑洞及检测机制
- 树莓派用Python+OpenCV做人脸识别
- vscode代码切换大小写的教程
- iOS 自动布局 Autolayout 报错:Unable to simultaneously satisfy constraints.
- Schema being registered is incompatible with an earlier schema