Upgrade to Pro — share decks privately, control downloads, hide ads and more …

打造国际化产品:Strikingly的I18n实践

Linghui Gong
September 24, 2016

 打造国际化产品:Strikingly的I18n实践

Strikingly 的用户遍及 200 多个国家和地区,这些用户来自不同的文化背景,熟悉不同的语言,如何使这些用户使用各自熟悉的语言访问我们的 Web 服务和移动应用,与我们的客服人员沟通,甚至将该语言的文化元素融入到产品设计中,是我们一直致力于解决的问题,在这个过程中我们也积累了不少经验,希望可以分享出来并帮助到有志于打造国际化产品的团队。

Linghui Gong

September 24, 2016
Tweet

More Decks by Linghui Gong

Other Decks in Technology

Transcript

  1. • ⽤用户来⾃自200多个国家和地区 • ⽀支持Web端和移动端 • ⽀支持6种语⾔言的产品界⾯面和客户服务 • ! English •

    " ⽇日本語 • # Français • $ Español • % 简体中⽂文 • & 繁體中⽂文 • 2016年年4⽉月正式推出 • ⽤用户主要来⾃自中国⼤大陆 • 本⼟土化的产品特性 • 产品界⾯面和客户服务 • % 简体中⽂文 • 独⽴立于 Strikingly 的品牌 • 代码⾼高度重⽤用
  2. Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React

    React Native iOS Android I18n: Technology
  3. Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React

    React Native iOS Android Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React React Native iOS Android I18n: Server
  4. Ruby I18n • Ruby i18n • Github repo: https://github.com/svenfuchs/i18n •

    Ruby Gem 提供 i18n ⽀支持的标准 • devise • doorkeeper • simple_form • Rails i18n • Rails i18n API: http://guides.rubyonrails.org/i18n.html • ⾃自Rails 2.2开始包含 Ruby i18n gem • Active Record • Active Support
  5. Browser Mobile Server Angular jQuery Rails Ruby I18n React React

    Native iOS Android Gettext Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React React Native iOS Android I18n: Server
  6. Gettext • gettext • 最初由 Sun Microsystems 开发 • 类

    Unix 系统的 i18n 和 l10n ⽀支持 • GNU gettext • 由 GNU 在 1995 年年发布 • ⽬目前最常⻅见的gettext实现
  7. Gettext • gettext • 最初由 Sun Microsystems 开发 • 类

    Unix 系统的 i18n 和 l10n ⽀支持 • GNU gettext • 由 GNU 在 1995 年年发布 • ⽬目前最常⻅见的gettext实现 • 各种主流语⾔言都有gettext的实现 • Ruby Gettext: https://github.com/mutoh/gettext • Ruby FastGettext: https://github.com/grosser/fast_gettext
  8. Ruby I18n v.s. Gettext Ruby I18n Gettext ID “errors.not_authorized” "Not

    authorized to complete the action." 提取 N/A ⾃自动提取 可读性 代码可读性⼀一般 代码可读性强 适⽤用场景 Rails组件,Ruby gem的i18n⽀支持 其他
  9. Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React

    React Native iOS Android Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React React Native iOS Android I18n: Browser
  10. I18n: Browser • I18n-js • https://github.com/fnando/i18n-js • 遵循 Ruby i18n

    的规范 • 类似 Ruby i18n 的API • 可以导⼊入和重⽤用 Ruby/Rails 的词典⽂文件
  11. I18n: Browser • Gettext (jsxgettext + Jed) • jsxgettext •

    https://github.com/zaach/jsxgettext • 从 js ⽂文件及各种 js 模板⽂文件中提取字符串串 • Jed • https://slexaxton.github.io/Jed/ • Gettext 的⼀一个 Javascript ⾼高效实现
  12. Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React

    React Native iOS Android Browser Mobile Server Angular jQuery Rails Ruby I18n Gettext React React Native iOS Android I18n: Mobile
  13. “上线了了”带来的挑战 • 99%的代码重⽤用 • 全新的本地化品牌 • 上线了了 ≠ Strikingly简体中⽂文版 •

    品牌名称置换:Strikingly -> 上线了了 • 不不同⻛风格的⽤用词:“发布” v.s. “上线” • 上线了了未来可能⽀支持英语和其他外语
  14. 解决⽅方案 • MultiI18n • 分离 Strikingly 和上线了了的 i18n 词典 •

    在翻译平台上创建上线了了的 i18n 项⽬目 • 修改 rake task 分别处理理两个产品的数据上传/下载 • 系统启动时,根据环境变量量中设置的产品代号动态加 载对应的配置⽂文件和词典
  15. 联系我们! • StrikinglyTeam公众号 • 技术 • 产品 • 创业 •

    [上海海] [成都] 我们在招聘! • Email: [email protected] • 如应聘成都职位,请在邮件标题注明