Sobre o tópico deste artigo, fui inspirado por uma história de um passado muito recente. Fui à página do produto chamada Supersite, a empresa que não cutucará os dedos LLC (mas as pessoas do setor de domínios reconhecem). Fui do meu aconchegante escritório na Letônia e fiquei surpreso ao encontrar a seguinte foto:

E, para dizer o mínimo, fiquei confuso com a moeda em que o custo dos serviços foi indicado. De fato, no pátio da segunda metade de 2018 e o latão letão oficialmente deixaram de existir em janeiro de 2014 e foram substituídos pelo euro. E por 4 anos, a empresa não mencionada acima não se preocupou em auditar os locais usados.
Abaixo, mostrarei o que você deve se lembrar ao internacionalizar e localizar seu produto e onde obter dados para revisões periódicas.
Definições
Será lógico entender no início o que é o que e concordar com o que chamaremos no futuro. Então ...
- Internacionalização (internacionalização, i18n) - preparando um produto de software para trabalhar com vários idiomas e diferenças locais, sem a necessidade de finalização de um arquivo durante sua implementação. Muitas cartas, portanto, explicarei com exemplos. Desenhe seu site para que, sem intervenção adicional do
arquivo de layout , ele funcione para ortografia da esquerda para a direita e da direita para a esquerda - internacionalização. Substitua todo o código do texto por variáveis de idioma - é o mesmo. Ensinar um produto a formatar datas é novamente o mesmo. A propósito, o número 18 em i18n significa apenas o número de letras entre a primeira e a última na palavra internacionalização. Sou preguiçoso, por conveniência, continuarei usando o i18n. - Localização (localização, L10n) - adaptação de software internacionalizado aos padrões de uma região específica (localidade). I.e. quando você fornece uma lista de variáveis de idioma para tradução para o inglês
Bushman e especifica o formato numérico para os indianos, é L10n. - Localidade é um conjunto de parâmetros que define o idioma e configurações específicas da interface do usuário que correspondem aos hábitos dos usuários de uma determinada região.
Por que você precisa disso?
Boa pergunta Muitas linguagens de programação modernas contêm algoritmos embutidos para localização básica (formatação de datas, números, moedas). E se
você não se importa, está completamente pronto para confiar na tecnologia que escolheu e
não se preocupa com os usuários. Sua visão do i18n para o seu produto não vai além disso, o único motivo possível é curiosidade ociosa e desenvolvimento geral.
No entanto, o diabo está nos detalhes. E essas pequenas coisas às vezes não prestam atenção, o que pode ser muito irritante para os usuários. Se você já possui uma sólida experiência com o i18n, provavelmente encontrará pouco neste artigo (talvez alguns exemplos da vida). Nesse caso, ficarei grato se você adicionar comentários de sua experiência (e me corrigir se eu cometi algum erro). O resto, espero, encontrará alimento para o pensamento.
Quais aspectos o código do idioma inclui?
Geralmente, o código do idioma é especificado como a combinação de idioma e país. Esses parâmetros são suficientes para definir a combinação de nuances de idioma e outros parâmetros usados na região. Para algumas tarefas específicas, pode ser necessária uma divisão mais complicada (por exemplo, jurisdições fiscais de alguns países). Nesse caso, um terceiro parâmetro ainda está definido - uma variação (por exemplo, para uma região específica, sistema operacional etc.). Além disso, depende muito de quão próximo você deseja estar do usuário (por exemplo, nas Filipinas, existem 12 idiomas indígenas com mais de um milhão de falantes, eles ficariam satisfeitos).
Então, o que o código do idioma inclui?
Popular e óbvio
A formatação da maioria dos parâmetros desse grupo fornece, talvez, as linguagens de programação mais modernas. Embora seja melhor cuidar deles um pouco, só por precaução. Ou pelo menos a tempo de atualizar as versões das bibliotecas correspondentes.
- Tradução - tudo está claro aqui, nenhuma linguagem de programação fará isso por você. Ao preparar um produto para tradução, lembre-se de uma regra simples: a unidade mínima desejada para uma variável de idioma é uma sentença (na medida do possível). Uma frase melhor como um todo. Isso pode não ser óbvio se o arquiteto do sistema conhecer apenas uma ou duas línguas gramaticalmente próximas (eu tive que lidar com essas experiências pessoais e, como resultado, os desenvolvedores tiveram que refazer e reescrever um grande número de mensagens de texto em seu código). Mas a linguagem no sentido amplo é um reflexo do estilo de vida e das características culturais de certas pessoas.
Por exemplo, todos (ou muitos) sabem que em inglês há uma ordem estrita de partes do discurso. Até onde eu sei, também em chinês, a propósito. Mas, em russo, a ordem das palavras pode não ter sentido algum ou alterar o significado ("você é muito inteligente" soa como elogio e "você é muito inteligente" é uma ameaça). Em árabe, existem diferenças na comunicação com homens e mulheres, em japonês - entre classes sociais. Dependendo da importância deste ou daquele público para você, você deve estudar essas sutilezas em detalhes com um falante nativo ou ignorá-lo. - A data e a hora geralmente diferem precisamente na formatação da data. A diferença no formato da hora é principalmente um formato de 12 ou 24 horas. Mas com a data das opções muito mais. Os formatos de data geralmente são assumidos como múltiplos. Dia e mês; dia, mês, ano em formato numérico; dia, mês, ano em formato estendido. E então o número de opções está crescendo rapidamente. Em algum lugar, o separador é um ponto, em algum lugar - uma barra, em algum lugar em formatos abreviados, o primeiro é o dia, em algum lugar do mês. Mais diversão com o formato estendido. Tomemos, por exemplo, a data do meu nascimento (sou modesto, sim). Então, em 5 de setembro de 1986, nasceu um homem que tinha bytes sujos com essa obra. Vamos para os locais. Dois países de língua inglesa para começar.
- EUA - 5 de setembro de 1986.
- Reino Unido - 5 de setembro de 1986.
E este é apenas o começo. Não há casos em inglês, mas mesmo no início de nossa jornada, en_US e en_UK são diferentes. Dê uma olhada nas línguas dos países?
- Rússia - 5 de setembro de 1986. Então os casos apareceram. E aqui as surpresas podem começar, porque as ferramentas de formatação de data padrão em sua linguagem de programação podem não estar cientes dos casos nominativos e genitivos.
- Letônia - você quer apenas nomear a data ou dizer que algo aconteceu nessa data? Em russo (hoje) 5 de setembro e (nascido) em 5 de setembro, tudo é genitivo. Mas em letão, o nome simples para a data é 1986 gada 5.septembris. E se "eu nasci" - 1986 gada 5.septembrī. O ano é o primeiro, o número está no caso local (a tradução aproximada é "em 5 de setembro"). E depois de todos os números ordinais em letão, um período é colocado.
Alvo do mundo inteiro? Pense em quais formatos de data usar. Talvez seja melhor não mexer com os avançados, é improvável que as funções de formatação incorporadas levem em consideração todas as sutilezas mencionadas acima. E eu passei por apenas 4 dos 195 países - membros e observadores da ONU. - O formato numérico também contém muita confusão. Conheço apenas o separador das partes inteiras e fracionárias (geralmente um ponto ou vírgula) e os separadores dentro da parte inteira (encontrei as opções “sem separador”, vírgula, espaço, também permito o uso do período e do apóstrofo). O papel também é desempenhado pelas posições em que os divisores são colocados. Digamos que nós (e não apenas) estamos acostumados a definir divisores a cada 3 posições (milhares, milhões, etc.). Mas aqui os habitantes da Índia e dos países vizinhos mencionados acima vivem suas próprias vidas. O primeiro separador na parte inteira (contando com o decimal) vem após 3 posições (milhares) e depois a cada dois: lakh (100 mil), crore (10 milhões) e assim por diante. Assim, nossos 42.000.000 no sistema de gravação indiano se parecerão com 4,20,00,000 . E eles costumam medir o salário anual em milhares de rupias por lá. No entanto, na questão de formatar números com um alto grau de confiabilidade, você pode confiar na linguagem de programação.
- Um formato de moeda é essencialmente um número formatado, com um prefixo ou sufixo para um símbolo ou código de moeda. O principal aqui é garantir que não haja aventuras, como no início do artigo. Actualmente, aplica-se especialmente aos países da UE, como alguns podem aderir à zona de rotatividade do euro.
- A direção da escrita realmente cobre um pouco mais do que apenas escrever o texto inteiro de outra maneira em alguns idiomas. Este é um trabalho para um designer de layout ou UI. Ao localizar uma interface criada para idiomas “da esquerda para a direita”, ela geralmente é completamente espelhada para idiomas “da direita para a esquerda” (por exemplo, o logotipo e a barra lateral com o menu do site estarão à direita).
Menos óbvio
Alguns dados relacionados ao i18n são usados com bastante frequência, mas algumas vezes com leves omissões. Aqui, a linguagem de programação não ajuda, você precisa trabalhar com canetas.
- Código Postal Adivinhe quantos países não usam o código postal? De acordo com um artigo sobre o grande e onisciente , 66! Para ser sincero, observo que três deles usam um sistema semelhante ao código postal, que permite codificar até a rua / grupo de casas / casas. Mas restam mais 63, nos quais o código postal não é usado, ou sua implementação foi planejada ou planejada. E este é quase um terço dos países do mundo. Agora lembre-se de quantos sites você conheceu. Onde o CEP é um campo obrigatório? E nada pode ser feito sobre isso. Embora a abordagem correta seja torná-la obrigatória apenas para os países onde ela existe. Além disso, se desejado, você pode verificar a entrada para os padrões do país selecionado pelos usuários. Felizmente, esta informação está disponível (incluindo o link acima).
- Região Como opções - estado, região ... Outro campo que eles gostam de tornar obrigatório, sem levar em conta a situação real do endereço postal no país. Sim, mesmo nos países menores, há algum tipo de divisão administrativa ( detalhes no mesmo wiki ), mas nem sempre vale a pena tornar o campo obrigatório.
- Número de telefone Consiste em um código de país e um identificador nacional. E se não for um problema obter uma lista de códigos de países, podem surgir nuances com a validação de um identificador nacional. Por exemplo, qual é o tamanho mínimo do número costurado na sua verificação? Mas o número mínimo real é de 4 dígitos. Sim, isso se aplica apenas a dois territórios em miniatura, um dos quais é o quinto no final em termos de população, o outro também fica próximo em algum lugar. Mas aqui quero focar mais na validade do que na chance de obter um dos aproximadamente 1600-1700 residentes de Niue como usuário. Por referência, você pode ter uma idéia do tamanho dos identificadores nacionais por país.
- Nome e apelação (título). Aqui, muita média usual é suficiente. Campos para nome e sobrenome mais tratamento respeitoso. Como nos outros pontos desta seção, tudo depende de quão “você” você quer ser. Se, em termos gerais, o nome e o sobrenome forem obrigatórios (embora em casos raros a lei possa estabelecer apenas um). Por conveniência, você pode criar campos para circulação, outros nomes e um sufixo (todos esses são "junior", "third"). Se você entrar em particular, as regras da escrita podem variar muito de cultura para cultura, de idioma para idioma.
- Rússia - todos sabemos que um nome completo consiste em sobrenome, nome e patronímico. No idioma, como no próprio país, a ordem é muito condicional; portanto, no endereço, o sobrenome pode estar em primeiro ou último lugar e o nome do meio pode ser omitido. Opcional pode ser adicionado no início da apelação Sr. / Sra. (Sr. / Sra.).
- EUA - o nome completo geralmente consiste no próprio nome (nome, "nome"), nome ou nomes intermediários (nome do meio) ou nome e sobrenome. Está escrito como padrão nesta ordem; nomes intermediários podem ser omitidos. Opcionalmente, um recurso pode ser adicionado (o mais popular: Sr., Sra., Sra. Dr).
- Letônia - o nome completo consiste no nome e sobrenome, sempre nessa ordem. O patronímico, como tal, existe apenas na certidão de nascimento, não é usado em outros documentos. Existe uma forma de tratamento educado kungs / kundze (análogo do cavalheiro / amante russo), que é colocada após o sobrenome (ou seja, no final e não no início, como nas versões anteriores). O sobrenome é então registrado no pagamento genitivo.
- China - no registro original em chinês, o sobrenome sempre é o primeiro, depois o nome. Existe uma forma educada de apelação que une o sobrenome (mescla-se a ele e não com uma única palavra). Meu sobrenome Vasiliskov no registro chinês será parecido com 瓦西里斯科夫. E a contraparte chinesa, "Sr. Basilisk", é 瓦西里斯科夫 先生.
Mimos com chinêsNão é relevante para o tópico do artigo, mas pode trazer muito lulz. Se você pegar a palavra, traduzir o tradutor do Google para o chinês e dividir o resultado em 1-2 hieróglifos e traduzir novamente, poderá passar um tempo muito emocionante. Diga, ele se traduz como "Manjericão", "como baía" e "Cracóvia". Mas o significado secreto do conhecimento antigo pode ser revelado em palavras comuns. Digamos que o telefone seja traduzido para 电话. Nesse caso, 电 - "eletricidade", 话 - "palavras". Outras palavras com eletricidade: battery - bateria (池 - piscina), 电脑 - computador (脑 - cérebro), 电影 - filme (影 - sombra). Não verifiquei com chinês de verdade nesta parte, mas o tempo pode ser gasto dessa maneira muito bem. Em geral, uma linguagem interessante. Depois dos letões e poloneses, seria preciso ...
- Filipinas - aqui os sistemas de ortografia dos nomes americano e espanhol se misturam historicamente. Tomada desde os dias da colonização espanhola, a tradição de soletrar os nomes da mãe e do pai foi misturada ao americano para dar nomes intermediários. Na versão atual, o nome dado ao nascimento é registrado na coluna "nome", o nome da criança se torna o sobrenome do pai e o nome do meio é o nome de solteira da mãe.
Como você pode ver, adaptar o sistema a todas as opções de gravação possíveis pode torná-lo muito complicado. Mas se um dos mercados importantes para o seu produto estiver localizado em um determinado país, você precisará tentar.
Opções mais raras
É improvável que a maioria de vocês precise dos aspectos i18n dessa categoria. Mas ainda pode ser útil mantê-los em mente.
- Sistema de unidades. Seus usuários estão acostumados a metros, quilogramas, litros e graus Celsius? Ou pés, libras, galões e graus Kelvin? Eu mesmo não estive nos Estados Unidos ainda, mas aqueles que estiveram lá me disseram que, ao chegar lá, você se encontra em
Nárnia, o maravilhoso mundo das unidades "não sistemáticas". E depois de um certo tempo passado lá, você começa a esquecer os do sistema. - Tamanho do papel. Está parcialmente relacionado ao anterior e é muito útil se você gerar algum tipo de fatura, formulários em papel e algo mais que possa ser impresso e colocado em uma pasta para gravações ou entregue a alguém. A maioria dos países está acostumada ao formato A4. Mas os EUA, por exemplo, usam amplamente os formatos Letter (8 1⁄2 x 11 polegadas, 216 x 279 mm) e Legal (8 1⁄2 x 14 polegadas, 216 x 356 mm).
- Regras de sequência combinadas. Um dos aspectos que muitas vezes pode ser útil e difícil de implementar. Pelas regras das seqüências combinadas, quero dizer aqueles casos em que você precisa formar um pedaço de texto e não apenas produzir uma variável de linguagem. Os exemplos incluem, mas não estão limitados a:
- declinação de palavras relacionadas ao número (no seu carrinho 3 produtos / 5 produtos);
- formação do nome completo a partir do exemplo acima;
- o uso correto do gênero gramatical nos idiomas em que ele existe (Prezado Sr. Ivanov / Prezada Senhora Ivanova), etc.
O que fazer com eles? Se você segmentar um número limitado de localidades ou expandir gradualmente, poderá pensar na arquitetura desses pontos escorregadios. Mas seria ideal contorná-los com cuidado e neutralidade.
Onde obter informações?
No texto do artigo, dei links para a Wikipedia, mas todos sabemos que é melhor não usá-la como uma fonte séria de conhecimento. Felizmente, há um projeto
Common Repository Data Repository suportado pelo
Unicode Consortium . Além de conter
um número incrível de aspectos e parâmetros de localidades, é atualizado regularmente pela comunidade, os dados estão disponíveis para download gratuito no formato XML, o que permite que os padrões regulares sejam atualizados sem problemas com a arquitetura correta.
Eu toquei apenas nos aspectos básicos na minha opinião. Se você acha que perdi alguma coisa, escreva nos comentários, acrescentarei. Compartilhe sua experiência com produtos localizados ao mesmo tempo.
Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps da US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até dezembro de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Somente nós temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?