通过杰克罗默
2019 - 11 - 03 - t23:00:00 - 0600
主题:科技
喂,vrienden !
好消息,我们的朋友在荷兰-自行车索引现在有荷兰语
作为其在全球范围内消除自行车盗窃的持续使命的一部分,自行车指数与BikeFair这家荷兰自行车市场致力于为二手自行车销售带来安全和透明度。让荷兰用户访问“自行车索引”是这种合作关系的一个重要组成部分。
加上我们最近与荷兰赃物登记系统的整合stopheling.nl而且verlorenofgevonden.nl在荷兰,这个国际化项目将使荷兰骑车人能够使用“自行车索引”注册和搜索他们的自行车,并使用“自行车索引”的新功能促进了警报该服务使用有针对性的Facebook广告,更有效地找回丢失和被盗的自行车。bwin娱乐平台注册
作为其他开源项目的资源指南,可能需要承担类似的项目(或自行车索引的贡献者-我们是开源!),下面简要概述了国际化Rails应用程序所涉及的注意事项、我们的特殊约束和需求,以及我们在实现中所做的决定。
除非你的Rails应用程序从一开始就已经国际化了,否则最小化国际化需要三方面的努力:
对于Bike Index,我们对其他国际化的开源Rails项目所采用的方法做了一些研究——特别是,话语而且GitLab。这项工作有助于为要做的工作建立一种思维模式,尽管在不同的需求或约束要求时,我们自然会偏离这些模式。
有很多方法可以检测用户的语言环境:
语言环境
查询参数(可通过UI元素设置),ACCEPT_LANGUAGE
在请求上设置的头(可通过用户的浏览器首选项进行设置),以及为了减少复杂性,我们实现只有(1)到(3)。
翻译管理是一个“购买还是构建”的决策点。这里要讨论的中心问题是
这让我们对在其他地方见过的各种翻译管理服务进行定价,并研究它们的功能集,包括Transifex,LingoHub,短语。
所有这些都需要每月缴纳19到180美元不等的订阅费,此外还有翻译费用,我们估计最初的荷兰语翻译费用为8000到10000美元。
更多的挖掘浮出水面Translation.io,它是轻量级的,专注于Rails(和Laravel)项目,并为我们按下了所有正确的按钮:
作为一个非营利组织,我们对价格相对敏感,不想低效地使用资金,所以潜在的节省给了翻译。这对我们的讨论大有帮助。
它最重要的功能差距相对于它的替代方案-自动GitHub PRs同步翻译-可以实现一些Shell脚本集成到我们的构建管道中所以我们有了一个明显的赢家。
这个阶段的关键决定是翻译文件使用什么格式,可以选择YAML (TheRails默认),GetText(在Rails生态系统之外广泛流行)。
GetText已经与Rails默认值相比的几个优点特别是对于大型项目——最引人注目的是字符串不需要从模板外部化到翻译文件中。相反,源字符串存在于模板中,但只是包装在一个特殊的方法中。
但是,就像在Rails上下文中经常发生的情况一样,对于像Bike Index这样的中等规模项目的需求,默认值总体上比备选方案优化得更好,即使这些备选方案在某种意义上更好。
现有的工具既可以减轻Rails默认的i18n框架的缺点,又可以放大它的优点,所以我们选择不太偏离Rails的约定,以便尽可能多地利用开源现有技术。此外,YAML方法允许非开发人员(营销人员?)在不深入源代码的情况下编辑源代码副本。
字符串外部化是目前为止最耗时的劳动密集型的翻译项目的一部分。
我们尽可能地使用各种代码生成和文本整理工具实现自动化:
在从大约15,000行模板、控制器和React代码中扫描和提取字符串的过程中,我们收获了一些经验。看看我们国际化文档如果你想了解更多的话!
这篇文章的扩展版本——以及Jake的其他文章——可以在这里找到他的博客。