国际化的自行车指数

通过杰克罗默

2019 - 11 - 03 - t23:00:00 - 0600

主题:科技


喂,vrienden !

好消息,我们的朋友在荷兰,自行车指数在荷兰现在是可用的

作为正在进行的任务的一部分,消除全球自行车盗窃自行车指数与BikeFair荷兰的自行车市场,致力于把安全和透明度二手自行车销售。使自行车索引访问荷兰用户一直是一个关键组成部分,伙伴关系。

一起我们最近与荷兰赃物集成注册中心stopheling.nlverlorenofgevonden.nl,国际化项目将使荷兰自行车注册和搜索他们的自行车使用索引,并使用自行车的新索引促进了警报服务,它使用有针对性的Facebook广告更有效地恢复丢失和被盗自行车。bwin娱乐平台注册

自行车指数在荷兰

技术注释

作为资源指南其他开源项目,可能需要进行一个类似的项目(或贡献者自行车索引——我们开源!),下面是一个简短的提纲考虑参与国际化的Rails应用程序,我们迫切需要得到特定约束和东西在我们的实现中所做出的决策。

除非你的Rails应用程序已经国际化自成立以来,国际化最低限度需要三大工作:

  1. 增加的能力检测和设置语言环境对于一个给定的web请求。
  2. 如果使用默认的Rails i18n框架,外化面向用户的字符串,把他们从视图主要(但不仅限于)YAML。
  3. 与其他语言翻译你now-externalized字符串。

自行车指数,我们做了一些研究方法采取其他国际化开源Rails项目——特别是,话语GitLab。这工作是有用的在发展中一个心智模型的工作要做,虽然我们自然倾斜与他们不同的需求或约束要求。

现场检测

有许多方法来检测用户的语言环境:

  1. 显式地从语言环境通过UI元素)查询参数(可设置的,
  2. 显式地从数据库值与用户的帐户(通过用户偏好UI)可设置的,
  3. 显式的ACCEPT_LANGUAGE头设置在一个请求(可设置的通过用户的浏览器首选项)
  4. 推断一个地区从用户的地理编码的位置。

为了最大限度降低复杂性,我们实现只有通过(3)(1)。

翻译管理

翻译管理是一个决策点“购买和建造”。这里的核心问题与

  1. 我们想要开发人员把关更新翻译吗?(在我们的例子中,没有。)
  2. 我们想要接受翻译的贡献用户通过网站界面吗?(在我们的例子中,可有可无,但不可行的v1。)
  3. 我们可以投资资源为建设我们自己的翻译管理解决方案吗?(在我们的例子中,这是不可能的。)

离开我们定价的各种翻译管理服务我们会看到在其他地方使用和研究他们的特性集,包括Transifex,LingoHub,短语

所有涉及到的承诺每月订阅,每月从19美元到180美元不等,除了翻译的成本,我们估计将花费8000 - 10000美元的初始荷兰翻译。

更多的挖掘浮出水面Translation.io轻量级,专注于Rails (Laravel)项目,并推动我们所有的按钮:

  1. 这是免费开源项目
  2. 它会自动集成由谷歌翻译翻译(不完美但具有成本效益的解决方案80 - 90%),进一步降低了成本

作为一个非营利组织,我们对价格相对敏感,不想用资金效率低下,所以潜在的储蓄给翻译。在我们讨论io一臂之力。

最重要feature-gap相对于其替代品——自动化GitHub PRs同步翻译,可以实现一些shell脚本集成到构建管道,我们有一个明确的赢家。

字符串外化

这个阶段的关键决定是什么格式用于翻译文件,选择YAML (Rails默认),GetText(广泛流行的Rails系统以外的)。

GetText已经Rails默认的几个优点,特别是对于大型项目,最引人注目的无疑是不需要被外部化字符串从模板翻译文件。相反,源字符串模板中生活,但仅仅是包装在一个特殊的方法。

但是,通常情况下在Rails环境下,默认值是集体更好地优化moderately-scaled项目像自行车的需求指数的选择,即使那些选择在某种意义上单独或另一个更好。

有已存在的工具,减轻Rails默认i18n框架的缺点,并增强其益处,所以我们选择不会过于偏离Rails约定为了利用尽可能多的开源的现有技术。此外,YAML方法允许非开发人员(营销?)没有深入源代码编辑源代码复制。

外化是迄今为止最耗时和字符串劳动密集型的翻译项目的一部分。

我们尽可能自动化使用各种代码生成和文本角力工具:

很好的实践

一些知识出现在扫描的过程中通过和提取字符串~ 15000行模板,控制器,和反应的代码。看看我们国际化文档如果你想阅读更多关于他们!

这篇文章的扩展版本——由杰克和其他人——可以找到他的博客

Baidu
map