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
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
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
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 …
• 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
Development Environment • Built-in i18n to Programming languages • ex: datetime, string encoding • Built-in i18n to Application Framework • ex: Ruby on Rails
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 …
• 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)
Client / Server • UI placeholder and contents management https://developer.kaizenplatform.com/entry/axross/2018-07-02 Reference: kaizen platform engineer blog
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
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
Support i18n integration • API https://medium.com/@jamuhl/vue-js-from-internationalization-i18n-to-localization-l10n-and-back-again-c3e5f7cc5e71 Reference: vue.js: from internationalization (i18n) to localization (l10n) and back again
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 …
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
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
What’s Progressive Framework? https://docs.google.com/presentation/d/1WnYsxRMiNEArT3xz7xXHdKeH1C-jT92VxmptghJb5Es/edit#slide=id.p From the below slide:
Problem regions • i18n Core • String encoding • Date & Time • and more … • Resource interpolating • Message syntax format (ICU or other?) • Interpolating system
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
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
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?)