babel/distutils命令帮助管理javascript翻译。

doublespeak的Python项目详细描述


双重语言

doublespeak允许您将javascript中的可翻译消息提取到 单独的po文件,然后让您将它们编译成json文件,这些文件可以 例如与 gettext.js

动机

许多现代python web应用程序还包括大量 javascript中的可翻译字符串。

因为这个javascript代码在浏览器中运行,而不是在 运行python代码的服务器需要 在单独的gettext po文件中的可翻译消息 然后可以生成json/javascript转换文件以加载到 浏览器。

不幸的是,Babel,它 提供distutils命令以创建邮件目录,并提取和 编译消息,不允许为 同一个包中有相同的语言。

doublespeak允许您通过提供新的babel/distutils 可用于从中提取可翻译消息的命令 javascript,并将它们与应用程序的其他部分分开 翻译。

新的distutils命令:

DoubleSpeak提供的新distutils命令是:

  • init_js_catalog-初始化一个新的gettext catalog, 专门针对js消息。
  • extract_js_消息-从js中提取消息并将其放入 目录。
  • {STR 1 } $UpDATEJSX目录< /强> -用消息更新现有目录 从新的js代码。
  • compile_js_catalog-创建已编译的.mo和json文件 从.po文件中

babel的用户会注意到这些命令与 巴贝尔提供的:

  • init_目录
  • 提取消息
  • 更新目录
  • 编译目录

一些doublespeak命令只是巴贝尔的包装。 命令。它们提供的好处是您可以配置它们 独立于babel命令,例如setup.cfg 文件。

配置

下面是一个setup.cfg文件示例,它演示了如何 配置标准的babel命令和新的doublespeak命令:

[compile_catalog]
# Change to a relevant domain
domain = mypackage
directory = src/mypackage/i18n/locales

[compile_js_catalog]
# Note that the Javascript files have a different domain. You'll need to use
# this domain in your Javascript code, instead of using the domain above,
# declared for the Python code.
domain = mypackagejs
# Contrary to compile_catalog, this commands takes both input and output
directories, so that you can write the JSON translation files to a separate
directory, where you might have the rest of your Javascript code.
input_dir = src/mypackage/i18n/locales
output_dir = src/mypackage/browser/resources/js/i18n

[extract_messages]
# Change to your organisation
copyright_holder = Acme Inc.
output_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackage.po
charset = UTF-8
add-comments = i18n

[extract_js_messages]
keywords = __
no-default-keywords = True
copyright_holder = Acme Inc.
output_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackagejs.po
charset = UTF-8
add-comments = i18n

[init_catalog]
domain = mypackage
input_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackage.po
output_dir = src/mypackage/i18n/locales

[init_js_catalog]
domain = mypackagejs
input_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackagejs.po
output_dir = src/mypackage/i18n/locales

[update_catalog]
domain = mypackage
input_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackage.po
output_dir = src/mypackage/i18n/locales

[update_js_catalog]
domain = mypackagejs
input_file = src/mypackage/i18n/locales/en/LC_MESSAGES/mypackagejs.po
output_dir = src/mypackage/i18n/locales

更改

0.3(2016-03-07)

  • 输出文件javascript现在是jshint happy。

0.2(2016-03-04)

  • 简化生成的javascript翻译文件。
  • 添加“output prefix”选项为生成语言的文件名添加前缀 .js文件,默认为''。
  • 添加“统计”和“使用模糊”与巴贝尔的编译目录相同。
  • 基于.po文件而不是.mo文件构建js文件。

0.1(2016-02-26)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件