“fluent”的django绑定,当今世界的本地化系统。
django-ftl的Python项目详细描述
django ftl是一个django包,用于Fluent,a 面向当今世界的本地化系统
此包基于Python implementation of Fluent并提供:
- 用于设置和管理.ftl文件的结构。
- 切换/设置当前语言的方法。
- 集成到django模板中。
我为什么要用这个?
Django世界的事实标准是GNU-Gettext有关 比较。简而言之,这里有一些优点:
- 流利的语言使翻译的工作像复数规则一样复杂。
- 流利的语言赋予译者遵守特定语言规则的能力 (性别、案件、复数)开发商可能不知道, 而且不必在软件中构建。
- fluent集成了数字和日期格式,为开发人员和 翻译人员可以控制这些内容,而不必处理这些内容 单独进行,且仅由开发人员控制
举个例子,在gnu gettext中支持复数规则。然而, 这是gettext所支持的唯一特定于语言的特性,而且 后来就穿上了。开发人员还必须对英语进行部分硬编码 规则(即英语中有两个变体的事实),根据 Django docs:
msg=ngettext('there is %(count)d object.','there are %(count)d objects.',count)%{'count':count,}
最后,这仍然不是很好的工作,因为你经常想特别 不管怎样,都是0号大小写-“没有对象”(或“您的收件箱是空的”等) 而不是“有0个对象”
在Fluent中,复数规则是 选择变体,译者就可以控制。等同于 fluent/django ftl,包括对zero案例的特殊处理,看起来像 这是一个英文.ftl文件:
there-are-some-objects = { $count -> [0] There are no objects. [1] There is one object. [other] There are { $count } objects. }
引用它的python代码只需要使用id (there-are-some-objects)并传递$count参数。
出现的另一个问题是性别——例如,在法语形容词中 与被描述的人在性别上一致。这可以通过Fluent来解决 把人的性别作为论据传递给译者 使用变体机制编写正确的语言这与GNU形成对比 getText,开发人员必须为其创建单独的消息字符串 每种情况,因为消息格式不够强大,无法允许 添加变体选择的转换器。另外,这些不同的消息字符串将 在没有这个特性的语言中是相同的,换句话说 所有语言的语法特征对 源代码和其他翻译器
文件
有关如何使用django ftl的文档位于docs/文件夹中,并在线访问 https://django-ftl.readthedocs.io。
历史记录
0.10(2019-05-23)
- 升级到更新版本的fluent.runtime(0.12及修改)
- 修复了use_isolating行为(现在为HTML消息插入了BDI字符)
- 加载捆绑包的线程安全修复。
- 更正了通过INSTALLED_APPS找到的“locales”目录的使用顺序 与正常的Django惯例一致。
0.9.1(2019-03-02)
- 改变开发自动下载机制,不干扰django的 开发服务器自动下载。
- 模板标记中指定无效模式时的错误修复。
- 对Middleware的各种修复和改进(附加测试)
- 线程安全包
- 通过上下文处理器配置ftlmsg的方法。
0.9(2018-09-10)
- 工作版本
- 取决于我们的python fluent版本
0.0.1分(2018年5月19日)
- PyPI上的第一个版本-空占位符包