跳转到主要内容

Plone i18n for JavaScript

项目描述

虽然Zope/Plone的国际化非常成熟,但在JavaScript中进行国际化的方式并没有被普遍接受。通常,包含JavaScript代码的软件包通过使用硬编码的字典或动态创建这些字典的模板来提供国际化。虽然这对于小的国际化目录来说很好,但随着目录的增大,这个过程会变得繁琐且难以更新。

此软件包提供在JavaScript代码中利用Plone中的国际化基础设施的基本功能

  • 允许您从Plone加载任意gettext目录。

  • 为您提供与Python代码中使用的非常相似的消息工厂

  • 使用现代浏览器中可用的本地存储来避免重新加载消息目录。

使用方法

您的软件包应依赖于jarn.jsi18n并将其包含在其元数据依赖项中。

为了实例化一个MessageFactory并使用它,您需要加载国际化目录。通常,这将以类似以下方式完成

$(document).ready(function () {
    jarn.i18n.loadCatalog('plone', 'el');
    _ = jarn.i18n.MessageFactory('plone')
});

loadCatalog的第二个参数指定语言是可选的,省略时使用html标签中的lang属性。

现在我们有了消息工厂,可以用来获取翻译后的字符串

> _('Contributor');
Συντελεστής

或者使用关键字参数

> _('Groups are: ${names}', {names: 'Jarnians'})
"Οι ομάδες είναι: Jarnians "

如果您愿意,可以加载多个目录(或相同目录的语言)并实例化它们的相应工厂,例如

> jarn.i18n.loadCatalog('plone', 'es');
> _es = jarn.i18n.MessageFactory('plone', 'es');
> _es('Contributor');
"Contribuyente"

缓存

如果客户端浏览器支持本地存储,则会使用它来存储您加载的目录。这样可以避免每次都发送ajax请求来加载完整目录。默认情况下,存储的目录有效期为24小时。您可以通过调用 jarn.i18n.setTTL(millis) 并传入毫秒数来设置有效期。请注意,如果本地存储 支持,并且缓存未过期,即使它在文件系统中已更改,浏览器也不会重新加载目录。

变更日志

1.1 - 2014-07-10

  • 针对Internet Explorer 8的修复,在jsi18n.js中定义Date.now():IE8默认情况下不知道Date.now() [kysr]

1.0 - 2013-01-25

  • 这是为了防止人们安装0.11版本而不是0.3版本。也,是时候1.0版本了…

0.3 - 2012-12-17

  • 不要缓存null目录内容 [cambell-bika]

  • 更简单的MessageFactory [mmariani]

0.2 - 2011-12-6

  • 一些错误修复。 [ggozad]

  • 使用jasmine.js进行测试覆盖率 [ggozad]

0.11 - 2011-11-01

  • 修复拼写错误。

0.1 - 2011-11-01

  • 第一个版本。

项目详情


下载文件

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

源分发

jarn.jsi18n-1.1.zip (41.8 kB 查看哈希值)

上传时间

支持