跳转到主要内容

Babel/distutils命令帮助管理JavaScript翻译。

项目描述

双言

双言允许您从JavaScript中提取可翻译的消息到单独的PO文件,然后允许您将它们编译为JSON文件,例如可以与gettext.js一起使用。

动机

许多现代Python Web应用程序也包括大量的可翻译的JavaScript字符串。

因为这段JavaScript代码在浏览器中运行,而不是在Python代码运行的服务器上,所以有必要将其可翻译的消息放在单独的gettext PO文件中,然后您可以从中生成JSON/Javascript翻译文件以在浏览器中加载。

遗憾的是,Babel,它提供了distutils命令来创建消息目录并提取和编译消息,但不允许你在同一个包中为同一语言创建不同的目录。

双言允许您这样做,它提供了新的Babel/distutils命令,您可以使用这些命令从JavaScript中提取可翻译的消息,并将它们与您的应用程序的其他翻译内容分开。

新的distutils命令

双言提供的新distutils命令包括

  • init_js_catalog - 初始化一个用于JS消息的新gettext目录。

  • extract_js_messages - 从JS中提取消息并将它们放入目录中。

  • update_js_catalog - 使用较新JS代码中的消息更新现有目录。

  • compile_js_catalog - 从.pot文件创建编译后的.mo和JSON文件。

Babel的用户会注意到这些命令与Babel提供的命令非常相似

  • init_catalog

  • extract_messages

  • update_catalog

  • compile_catalog

双言的一些命令实际上是Babel命令的包装器。它们提供的优势是您可以独立于Babel命令来配置它们,例如在您的setup.cfg文件中。

配置

以下是一个示例setup.cfg文件,展示了如何配置标准Babel命令和新双言命令

[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友好。

0.2 (2016-03-04)

  • 简化生成的JavaScript翻译文件。

  • 添加“output-prefix”选项以作为生成语言.js文件名的前缀,默认为''。

  • 添加“statistics”和“use-fuzzy”以与Babel的compile_catalog保持一致。

  • 基于.pot文件而不是.mo文件构建js文件。

0.1 (2016-02-26)

  • 初始版本。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

doublespeak-0.3.tar.gz (6.4 kB 查看哈希)

上传时间

支持者