Sur le sujet de cet article, j'ai été inspiré par une histoire d'un passé très récent. Je suis allé sur la page du produit, appelée Supersite, de la société Let's Not Poke Fingers LLC (mais les gens de l'industrie du domaine reconnaîtront). Je suis sorti de mon bureau confortable en Lettonie et j'ai été surpris de trouver la photo suivante:

Et, pour le dire légèrement, j'étais confus par la devise dans laquelle le coût des services était indiqué. En effet, dans le chantier naval du second semestre 2018, et le lat letton a officiellement cessé d'exister en janvier 2014 et a été remplacé par l'euro. Et depuis 4 ans, la société non mentionnée ci-dessus n'a pas pris la peine de vérifier les locaux utilisés.
Sous la coupe, je vais vous dire ce qu'il faut retenir lors de l'internationalisation et de la localisation de votre produit et où obtenir des données pour les révisions périodiques.
Définitions
Il sera logique de comprendre au début ce qu'est quoi et de s'entendre sur ce que nous appellerons à l'avenir. Alors ...
- Internationalisation (internationalisation, i18n) - préparation d'un produit logiciel pour travailler avec différentes langues et différences locales sans avoir besoin de finaliser un fichier lors de leur mise en œuvre. Beaucoup de lettres, donc je vais expliquer avec des exemples. Dessinez votre site Web afin que, sans intervention supplémentaire du
fichier de mise en page , il fonctionne pour l'orthographe de gauche à droite et de droite à gauche - internationalisation. Remplacez le code dur entier du texte par des variables de langue - c'est la même chose. Apprendre à un produit à formater des dates, c'est encore la même chose. Soit dit en passant, le nombre 18 dans i18n signifie uniquement le nombre de lettres entre la première et la dernière du mot internationalisation. Je suis paresseux. Pour plus de commodité, je vais continuer à utiliser i18n. - Localisation (localisation, L10n) - adaptation d'un logiciel internationalisé aux normes d'une région spécifique (locale). C'est-à-dire lorsque vous donnez une liste de variables de langue à traduire en anglais
Bushman et spécifiez le format numérique pour les Indiens, il s'agit de L10n. - Les paramètres régionaux sont un ensemble de paramètres qui définissent la langue et des paramètres d'interface utilisateur spécifiques qui correspondent aux habitudes des utilisateurs d'une certaine région.
Pourquoi en avez-vous besoin?
Bonne question. De nombreux langages de programmation modernes contiennent des algorithmes intégrés pour la localisation de base (formatage des dates, des nombres, des devises). Et si
vous ne vous en souciez pas, vous êtes complètement prêt à faire confiance à la technologie que vous avez choisie, et
vous ne vous souciez pas des utilisateurs, votre vision de l'i18n pour votre produit ne va pas au-delà, la seule raison possible est la curiosité oisive et le développement général.
Cependant, le diable est dans les détails. Et ces petites choses ne font parfois pas attention, ce qui peut être très gênant pour les utilisateurs. Si vous avez déjà une solide expérience avec i18n, vous en trouverez très probablement peu dans cet article (peut-être quelques exemples tirés de la vie). Dans ce cas, je vous serais reconnaissant si vous ajoutez des commentaires sur votre expérience (et corrigez-moi si j'ai fait une erreur dans quelque chose). J'espère que les autres trouveront matière à réflexion.
Quels aspects les paramètres régionaux incluent-ils?
Souvent, les paramètres régionaux sont spécifiés comme la combinaison de la langue et du pays. Ces paramètres sont suffisants pour définir la combinaison des nuances de langue et d'autres paramètres utilisés dans la région. Pour certaines tâches spécifiques, une division plus complexe peut être nécessaire (par exemple, les juridictions fiscales de certains pays). Dans ce cas, un troisième paramètre est toujours défini - une variation (par exemple, pour une région spécifique, un système d'exploitation, etc.). De plus, cela dépend beaucoup de la proximité que vous souhaitez avec votre utilisateur (par exemple, aux Philippines, il y a 12 langues autochtones avec plus d'un million de locuteurs, ils seraient ravis).
Alors, que comprend la locale?
Populaire et évident
Le formatage de la plupart des paramètres de ce groupe fournit, peut-être, les langages de programmation les plus modernes. Bien qu'il soit préférable de s'en occuper un peu au cas où. Ou au moins à temps pour mettre à jour les versions des bibliothèques correspondantes.
- Traduction - tout est clair ici, aucun langage de programmation ne le fera pour vous. Lors de la préparation d'un produit à traduire, n'oubliez pas une règle simple: l'unité minimale souhaitée pour une variable de langue est une phrase (dans la mesure du possible). Une meilleure phrase dans son ensemble. Cela peut ne pas être évident si l'architecte système ne connaît qu'une langue ou deux langues grammaticalement proches (j'ai dû faire face à de telles expériences personnelles, et en conséquence, les développeurs ont dû refaire et réécrire un grand nombre de messages texte dans leur code). Mais la langue au sens large est le reflet du mode de vie et des caractéristiques culturelles d'un certain peuple.
Par exemple, tous (ou plusieurs) d'entre vous savent qu'en anglais, il y a un ordre strict des parties du discours. Pour autant que je sache, en chinois aussi, soit dit en passant. Mais en russe, l'ordre des mots peut n'avoir aucun sens ou changer le sens («vous êtes très intelligent» sonne comme un éloge, et «vous êtes très intelligent» est comme une menace). En arabe, il existe des différences de communication avec les hommes et les femmes, en japonais - entre les classes sociales. Selon l'importance de tel ou tel public pour vous, vous devez soit étudier ces subtilités en détail avec un locuteur natif, soit l'ignorer. - La date et l'heure diffèrent en grande partie précisément dans le formatage de la date. La différence de format horaire est principalement un format 12 ou 24 heures. Mais avec la date des options beaucoup plus. Les formats de date sont souvent supposés être multiples. Jour et mois; jour, mois, année au format numérique; jour, mois, année au format étendu. Et puis le nombre d'options augmente rapidement. Quelque part, le séparateur est un point, quelque part - une barre oblique, quelque part dans des formats abrégés, le premier est le jour, quelque part le mois. Plus de plaisir avec le format étendu. Prenons par exemple la date de ma naissance (je suis modeste, oui). Ainsi, le 5 septembre 1986, un homme est né qui était sale avec cet opus. Allons aux emplacements. Deux pays anglophones pour commencer.
- USA - 5 septembre 1986.
- Royaume-Uni - 5 septembre 1986.
Et ce n'est qu'un début. Il n'y a pas de cas en anglais, mais même au début de notre voyage, en_US et en_UK sont différents. Examinez de plus près les langues des pays?
- Russie - 5 septembre 1986. Les affaires sont donc apparues. Et ici, les surprises peuvent commencer, car les outils de formatage de date standard dans votre langage de programmation peuvent ne pas être au courant des cas nominatifs et génitifs.
- Lettonie - voulez-vous simplement nommer la date ou dire que quelque chose s'est passé à cette date? En russe (aujourd'hui) 5 septembre et (né) 5 septembre, tout est génitif. Mais en letton, le nom simple de la date est 1986 gada 5.septembris. Et si «je suis né» - 1986 gada 5.septembrī. L'année est la première, le nombre est dans le cas local (la traduction grossière est «au 5 septembre»). Et après tous les nombres ordinaux en letton, un point est mis.
Cibler le monde entier? Pensez aux formats de date à utiliser. Il est peut-être préférable de ne pas jouer avec les fonctions avancées, il est peu probable que les fonctions de formatage intégrées prennent en compte toutes les subtilités mentionnées ci-dessus. Et je n'ai parcouru que 4 des 195 pays - membres et observateurs de l'ONU. - Le format numérique contient également beaucoup de confusion. Je ne connais que le séparateur des parties entières et fractionnaires (généralement un point ou une virgule) et les séparateurs à l'intérieur de la partie entière (j'ai rencontré les options «pas de séparateur», virgule, espace, j'autorise également l'utilisation du point et de l'apostrophe). Le rôle est également joué par les positions où les délimiteurs sont placés. Disons que nous (et pas seulement) avons l'habitude de définir des diviseurs toutes les 3 positions (milliers, millions, etc.). Mais ici, les habitants de l'Inde et des pays voisins mentionnés ci-dessus vivent leur propre vie. Le premier séparateur de la partie entière (en comptant à partir de la décimale) vient après 3 positions (milliers), puis tous les deux: lakh (100 000), crore (10 millions) et ainsi de suite. Ainsi, nos 42 000 000 dans le système d'enregistrement indien ressembleront à 4 20 000 000 . Et ils mesurent souvent le salaire annuel en lakhs de roupies là-bas. Cependant, dans le problème de la mise en forme des nombres avec un haut degré de fiabilité, vous pouvez compter sur le langage de programmation.
- Un format monétaire est essentiellement un nombre formaté, aromatisé avec un préfixe ou un suffixe pour un symbole ou un code monétaire. L'essentiel ici est de s'assurer qu'il n'y a pas d'aventures, comme au tout début de l'article. À l'heure actuelle, s'applique particulièrement aux pays de l'UE, comme certains peuvent rejoindre la zone de chiffre d'affaires de l'euro.
- La direction de l'écriture couvre en fait un peu plus que la simple écriture du texte entier dans l'autre sens dans certaines langues. Il s'agit d'un travail pour un concepteur de mise en page ou un concepteur d'interface utilisateur. Lors de la localisation d'une interface créée pour les langues «de gauche à droite», elle est souvent complètement reflétée pour les langues «de droite à gauche» (par exemple, le logo et la barre latérale avec le menu du site seront à droite).
Moins évident
Certaines données relatives à i18n sont utilisées assez souvent, mais parfois avec de légères omissions. Ici, le langage de programmation ne vous aide pas, vous devez travailler avec des stylos.
- Code postal Devinez combien de pays n'utilisent pas du tout le code postal? Selon un article sur le Grand et Omniscient , 66! En toute honnêteté, je note que 3 d'entre eux utilisent un système similaire au code postal, qui vous permet de coder jusqu'à la rue / groupe de maisons / maisons. Mais il en reste 63 autres, dans lesquels soit le code postal n'est pas utilisé du tout, soit sa mise en œuvre a été planifiée ou est planifiée. Et cela représente près d'un tiers des pays du monde. Rappelez-vous maintenant combien de sites vous avez rencontrés, où le code postal est-il un champ obligatoire? Et rien ne peut y être fait. Bien que la bonne approche serait de la rendre obligatoire uniquement pour les pays où elle existe. De plus, si vous le souhaitez, vous pouvez vérifier l'entrée des normes du pays sélectionné par les utilisateurs. Heureusement, ces informations sont disponibles (y compris le lien ci-dessus).
- Région Comme options - état, région ... Un autre domaine qu'ils aiment rendre obligatoire, ne tenant pas compte de la situation réelle de l'adressage postal dans le pays. Oui, même dans les plus petits pays, il existe une sorte de division administrative ( détails sur le même wiki ), mais cela ne vaut pas toujours la peine de rendre le champ obligatoire.
- Numéro de téléphone Il se compose d'un code de pays et d'un identifiant national. Et si ce n'est pas un problème pour obtenir une liste des codes pays, des nuances peuvent survenir avec la validation d'un identifiant national. Par exemple, quelle est la longueur minimale du numéro cousue dans votre vérification? Mais la vraie longueur minimale du nombre est de 4 chiffres. Oui, cela ne s'applique qu'à deux territoires miniatures, dont l'un est finalement le cinquième en termes de population, l'autre est également à proximité quelque part. Mais ici, je veux me concentrer davantage sur la validité que sur la chance d'obtenir l'un des 1600-1700 résidents de Niue en tant qu'utilisateur. Par référence, vous pouvez avoir une idée de la longueur des identifiants nationaux par pays.
- Nom et appel (titre). Ici, beaucoup de moyennes habituelles suffisent. Champs pour prénom et nom et traitement respectueux. Comme pour les autres points de cette section, tout dépend de la façon dont «vous» voulez être. Si en termes généraux, le nom et le prénom sont obligatoires (bien que dans de rares cas, la loi ne peut en établir qu'un seul). Pour plus de commodité, vous pouvez créer des champs de diffusion, d'autres noms et un suffixe (tous ceux-ci sont «junior», «troisième»). Si vous allez dans les détails, les règles d'écriture peuvent varier considérablement d'une culture à l'autre, d'une langue à l'autre.
- Russie - nous savons tous qu'un nom complet se compose d'un nom, d'un prénom et d'un patronyme. Dans la langue, comme dans le pays lui-même, la commande est très conditionnelle, donc dans l'adresse, le nom de famille peut être en premier ou en dernier lieu, et le deuxième prénom peut être omis. Facultatif peut être ajouté au début de l'appel M. / Mme (M. / Mme).
- États - Unis - le nom complet se compose souvent du nom lui-même (prénom, "prénom"), d'un ou de plusieurs noms intermédiaires (deuxième prénom) ou d'initiales et de noms de famille. Il est écrit en standard dans cet ordre, les noms intermédiaires peuvent être omis. En option, un appel peut être ajouté (le plus populaire: M., Mme, Mme, Dr).
- Lettonie - le nom complet se compose du nom et du prénom, toujours dans cet ordre. Le patronymique en tant que tel n'existe que dans l'acte de naissance, n'est pas utilisé dans d'autres documents. Il existe une forme de traitement poli kungs / kundze (un analogue du gentleman / maîtresse russe), qui est placé après le nom de famille (c'est-à-dire à la fin et non au début, comme dans les versions précédentes). Le nom de famille est alors enregistré dans le génitif.
- Chine - dans le dossier chinois d'origine, le nom de famille passe toujours en premier, puis le nom. Il existe une forme d'appel polie qui joint le nom de famille (fusionne avec lui, et non avec un seul mot). Mon nom de famille Vasiliskov dans le dossier chinois ressemblera à 瓦西里斯科夫. Et l'homologue chinois, "M. Basilisk" est 瓦西里斯科夫 先生.
Chouchouter avec le chinoisPas pertinent pour le sujet de l'article, mais peut apporter beaucoup de lulz. Si vous prenez le mot, traduisez le traducteur Google en chinois et divisez le résultat en 1-2 hiéroglyphes et traduisez en arrière, vous pouvez passer un moment très excitant. Dites, 瓦西 里 il traduit par «basilic», 斯科夫 par «baie», 科夫 par «Cracovie». Mais le sens secret de la connaissance ancienne peut être révélé par des mots ordinaires. Dites que le téléphone se traduit par 电话. Dans ce cas, 电 - "électricité", 话 - "mots". Autres mots avec électricité: 电池 - batterie (池 - piscine), 电脑 - ordinateur (脑 - cerveau), 电影 - film (影 - ombre). Je n'ai pas vérifié avec de vrais chinois dans cette partie, mais le temps peut être très bien passé de cette façon. En général, une langue intéressante. Après le letton et le polonais, il faudrait faire ...
- Philippines - ici, les systèmes orthographiques des noms américain et espagnol se sont historiquement mélangés. Tirée de l'époque de la colonisation espagnole, la tradition d'orthographe des noms de la mère et du père s'est mélangée à l'américaine pour donner des noms intermédiaires. Dans la version actuelle, le nom donné à la naissance est enregistré dans la colonne «nom», le nom de l'enfant devient le nom de famille du père et le deuxième prénom est le nom de jeune fille de la mère.
Comme vous pouvez le voir, l'adaptation du système à toutes les options d'enregistrement possibles peut le rendre trop compliqué. Mais si l'un des marchés importants pour votre produit est situé dans un certain pays, vous devrez essayer.
Options plus rares
La plupart d'entre vous n'auront probablement jamais besoin des aspects i18n de cette catégorie. Mais il peut être utile de les garder à l'esprit.
- Système d'unités. Vos utilisateurs sont-ils habitués aux mètres, kilogrammes, litres et degrés Celsius? Ou pieds, livres, gallons et degrés Kelvin? Je ne suis pas encore moi-même allé aux États-Unis, mais ceux qui y ont été m'ont dit qu'à leur arrivée, vous vous retrouvez dans le monde merveilleux des unités «non systématiques» à
Narnia . Et après un certain temps passé là-bas, vous commencez à oublier ceux du système. - Format papier. Il est en partie lié au précédent et est très utile si vous générez des factures, des formulaires papier et autre chose qui pourraient être imprimés et placés dans un dossier pour les enregistrements ou remis à quelqu'un. La plupart des pays sont habitués au format A4. Mais les États-Unis, par exemple, utilisent largement les formats Lettre (8 1⁄2 x 11 pouces, 216 x 279 mm) et Légal (8 1⁄2 x 14 pouces, 216 x 356 mm).
- Règles de chaîne combinées. Un des aspects qui peut en fait souvent être utile, et qui est difficile à mettre en œuvre. Par les règles des chaînes combinées, je veux dire ces cas où vous devez former un morceau de texte, et pas seulement produire une variable de langue. Les exemples incluent, mais ne sont pas limités à:
- déclinaison des mots liés au nombre (dans votre panier 3 produits / 5 produits);
- formation du nom complet à partir de l'exemple ci-dessus;
- l'utilisation correcte du genre grammatical dans les langues où il existe (Cher M. Ivanov / Cher Mme Ivanova), etc.
Que faire avec eux? Si vous ciblez un nombre limité de paramètres régionaux ou vous développez progressivement, vous pouvez penser à l'architecture pour de tels endroits glissants. Mais il serait idéal de les contourner avec soin et neutralité.
Où trouver des informations?
Dans le texte de l'article, j'ai donné des liens vers Wikipédia, mais nous savons tous qu'il vaut mieux ne pas l'utiliser comme une source sérieuse de connaissances. Heureusement, il existe un projet
Common Locale Data Repository pris en charge par le
consortium Unicode . Non seulement il contient
un nombre incroyable d'aspects et de paramètres de paramètres régionaux et est régulièrement mis à jour par la communauté, mais les données sont disponibles en téléchargement gratuit au format XML, ce qui permet aux normes régulières d'être mises à jour sans douleur avec la bonne architecture.
Je n'ai abordé que les aspects fondamentaux à mon avis. Si vous pensez que j'ai raté quelque chose, écrivez dans les commentaires, j'ajouterai. Partagez votre expérience avec des produits localisés en même temps.
Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une
réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).
VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'en décembre gratuitement en payant pour une période de six mois, vous pouvez commander
ici .
Dell R730xd 2 fois moins cher? Nous avons seulement
2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la
création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?