O documento discute os desafios da internacionalização de software, incluindo a variedade de línguas, formatos, convenções culturais e como bibliotecas como RequireJS, Handlebars e FormatJS podem ajudar a internacionalizar aplicações web.
4. Internacionalização - desenvolver software de maneira que
dê suporte ou seja facilmente adaptado a usuários de
diferentes línguas ou expectativas culturais.
6. Linguistas estimam que o número de línguas existentes
seja em torno de 6000
> 70% da Internet não fala inglês
Localizar para 8 línguas significa atingir 80% da população
mundial
10. Internacionalização é muito mais
que traduzir strings
People have exactly one canonical full name.
People have exactly N names, for any value of N.
People’s names fit within a certain defined amount of
space.
People’s names are written in ASCII.
People’s names are written in any single character set.
People’s names are all mapped in Unicode code points.
People’s names are case sensitive.
People’s names are case insensitive.
People’s names do not contain numbers.
11. My system will never have to deal with names from China.
I can safely assume that this dictionary of bad words
contains no people’s names in it.
People have names.
Falsehoods programmers believe about names
Falsehoods programmers believe about adressess
12. Como as linguas podem variar
direção (esquerda para direita, direita para a esquerda)
formato de data e hora
formato dos números
plurais
símbolos e pontuação
unidades de medida
tamanhos de folhas de impressão
atalhos e teclas
questões culturais
14. Microsoft Checklist
Look for geo-political sensitivity issues (e.g., borders may
be disputed between neighboring countries)
Run with Complex scripts and Right to Left (RTL) support
Verify all controls function correctly with the East Asian
(IME)
Verify switching the keyboard to a different mapping
works correctly
Verify ANSI, double-byte, and Unicode text are handled
correctly for display, input, and elsewhere (e.g., double-
byte characters will be split if treated as ANSI)
Verify any language-dependant features work correctly
16. Microsoft Checklist
Verify extended and non-standard characters are
displayed and handled correctly
Verify controls in dialogs and elsewhere are aligned and
sized correctly (e.g., text is not truncated)
Verify any functionality affected by the localization
process works correctly
Verify data is ordered correctly
Verify tab order is correct
Verify no unlocalized strings remain
Verify hot keys are [sic] localzied
17. Show me the code
1. RequireJS + plugin i18n
2. RequireJS + plugin Handlebars + FormatJS
18. Detectando a língua no servidor
var app = require('express')();
var appLocales = ['de', 'en', 'fr'];
app.get('/', function (req, res) {
var locale = req.acceptsLanguages(appLocales) || 'en';
// ...customize the response to locale
});
19. BCP47
en - inglês
mas - Maasai
pt-BR - Português do Brasil
es-419 - Espanhol da América Latina
zn-Hans - Chinês com caracteres simplificados
40. Concluindo
Internacionalização é mais do que traduzir strings
Produzir software internacionalizado compensa no longo
prazo
Não reinventar a roda
Contratar um nativo ou profissional
Incorporar internacionalização nos testes