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

future-of-i18n

kazupon
September 07, 2018

 future-of-i18n

kazupon

September 07, 2018
Tweet

More Decks by kazupon

Other Decks in Technology

Transcript

  1. Background • I've experienced a lot of different i18n what

    happened. • String encoding • Multi Languages • and more …. • I've developed, maintained as OSS developer. App or Service vue-i18n
  2. Agenda • The first half • About i18n • Current

    of i18n • Problems of i18n • The second half • Next generation i18n
  3. Today about not to talk • Design and Process of

    software development for globalization • Process of localization • See the book! https://book.impress.co.jp/books/1117101057
  4. What is i18n? • Internationalization
 
 
 
 
 


    • Generalize products in the format that doesn't depend on specific language, region and culture i nternationalizatio n 18 letters i18n
  5. What is l10n? • Localization
 
 
 
 
 


    • Specialize products in the format that depend on specific language, region and culture l ocalizatio n 10 letters l10n
  6. i18n <-> l10n i18n + l10n = g11n (globalization) 11

    letters Base ja en fr l10n i18n g11n
  7. FYI: Numeronym • A numeronym is a number-based word. l10n

    i18n g11n https://en.wikipedia.org/wiki/Numeronym World Wide Web Consortium w3c a11y k8s d11n
  8. Importance of i18n • hard to support software maintainance after

    release … • Leak easily, when software has became large scale. • Need to re-design the UI layouts. • Database, and other systems are also affected …
  9. • And also hard to localization … • The translator

    fix the source code.
 -> Really? It’s impossible … • Even if i18n had been fixed with translator, there is the possibility of breaking app ... Importance of i18n Breaking …
  10. Platform • Built-in i18n and provide for application • Windows

    / Mac OS / Linux (*nix) • iOS / Android • Web
  11. Development Environment • Built-in i18n to Programming languages • ex:

    datetime, string encoding • Built-in i18n to Application Framework • ex: Ruby on Rails
  12. Format of Resource Catalog • .pot, .po (gettext) • JSON

    • YAML • .strings (macOS / iOS) • XML base (Android, Java, .NET) • And more …
  13. Message Formatting • ICU (International Components for Unicode) Message Format


    http://userguide.icu-project.org/formatparse/messages
  14. Built-in programming languages • Support in most programming languages •

    e.g. Ruby • DateTime class • Time class • Date class
  15. Character encoding • Unicode have almost becoming defaults.
 https://unicode.org/ •

    Web:
 ex, html
 <meta charset=“utf-8"> • programming languages:
 ex, python (v3)
  16. It’s almost standardized • character encoding: ISO/IEC 10646 • datetime:

    ISO8601 • language tags: BCP 47 (IETF) • countries/states/subdivisions : ISO3166 • phone number: E.164 • currency: ISO4217 • and more …
  17. Enhanced with external libs • Phone Number
 libphonenumber (C/C++): 


    https://github.com/googlei18n/libphonenumber • Countries
 i18n-iso-countries(Node.js): 
 https://github.com/michaelwittig/node-i18n-iso-countries • DateTime
 spacetime (JavaScript):
 https://github.com/spencermountain/spacetime • and more …
  18. Languages • One country have multi languages (e.g. india) •

    Dialect (e.g. bt-pt) • Middle name (e.g. es) • Honorifix • and more …
  19. Feature of product • Law • Tax (payment, order) •

    Accounts (tax, audit) • GDPR • Culture • Foods (tastes, … etc) • and more …
  20. Database • Collation • Attribute of records dependent on country

    or culture • e.g. Middle name • Contents management for languages • and more …
  21. • I/F Miss-match of i18n per library • Resource catalog

    management Server Client / Server Client i18n lib i18n lib e.g. API or BFF model Resource catalog (errors, etc) Resource catalog (client specific) Client i18n lib Resource catalog (client specific)
  22. Translation • Translation have improved dramatically with machine learning! https://arxiv.org/pdf/1609.08144.pdf

    Reference:
 Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
  23. Translation process • Out-sourcing model • Crowd-sourcing model Translator Software

    Company Translation Company Software Company Translator Software Company Translator Software Company Translator Translator … out-sourcing crowd-sourcing … Translator
  24. I thought in App dev position • I don't want

    to worry about key naming of resource catalog … • I don't want to worry about resource catalog management … • I don't want to effort pseudo localization test … • I don't want to worry about choice of i18n library …
  25. Usability • i18n takes time and effort … • Need

    to be the simply and easily to use it
  26. Testability • Hard to i18n test … • e.g. Test

    per language • e.g. Setup language environment
  27. Extendability • need to support edge-case of i18n • e.g.

    String encoding: • utf-8 -> shift-jis • e.g. Decision Shortcut key: • en: enter • ja: shift + enter
  28. SaaS for i18n? • Provide some SaaS of development environments!

    Need the i18n as a Service! source code management ci code coverage platform environment error tracking
  29. Because … • We don’t need all the things! •

    High learning cost… Resource Catalog Message Formarting Custom X CLI Testing tool UI supporting tool
  30. “Framework that can solve problems in respond to progressive request

    changes of applications.” install libs and tools when need to resolve
  31. Problem regions • i18n Core • String encoding • Date

    & Time • and more … • Resource interpolating • Message syntax format (ICU or other?) • Interpolating system
  32. Problem regions • Resource catalog system • Resource structure •

    Resource bundling • Resource format • Resource management • CLI
  33. Problem regions • Large scale supporting system • UI layouting

    tool • Test utilities • Integration supprting • … and more!
  34. Cases • small-case: e.g. client only • i18n Core •

    Resource interpolation • Resource catalog system • large-case: e.g. client / server • Above + … • Resource management • Large scale supporting system
  35. Plugin System • Enhance the features available • Add the

    methods or functions i18n Core i18n plugin-x (ISO3166) App (EC Service) i18n plugin-1 (E.164)
  36. What’s WebAssembly? • WebAssembly (abbreviated WASM) is a binary instruction

    format for a stack-based virtual machine. • WASM is designed as a portable target for compilation of high-level languages like C/C++/ Rust, enabling deployment on the web for client and server applications. https://webassembly.org/ Reference From top of website
  37. CLI • Resource Catalog Management tool • Resource Interpolate optimization

    • and more … i18n add zh i18n extract ja.json, fr.json i18n convert en.csv en.json i18n compile …
  38. Editor • Provide the extension of editor • Like the

    IntelliSense of VSCode Easy resource key inputing !
  39. • Support continuous localization App Hook API for l10n service

    i18n Core Localization Service hook Call Notify Translate Translator
  40. TBD • WASM is still MVP… • NONE-JavaScript environments don't

    support … • The Implementation of plugin system is difficult … • How to distribution i18n framework • Library implemented with WebAssembly
 (Should we use existing package manager?)
  41. TBD • Should we need to re-implement the bellow? •

    date & time • String encoding • and more …