Internationalisation dans vos projets

voix
44

Comment avez-vous mis en œuvre Internationalisation (i18n) dans des projets réels que vous avez travaillé?

Je pris un intérêt à faire un logiciel transculturelle après avoir lu le fameux message par Joel, Le logiciel Chaque Absolute minimum Developer Absolument, Positively doit savoir sur Unicode et les jeux de caractères (Aucun Excuses!) . Cependant, je n'ai pas encore en mesure de tirer parti de cela dans un projet réel, en plus de faire que je les chaînes Unicode , si possible. Mais faire toutes vos chaînes Unicode et vous assurer de comprendre ce que tout encodage vous travaillez avec est en est que la pointe de l'iceberg i18n.

Tout ce que je travaille à ce jour a été pour travailler avant de pousser le projet en direct par un ensemble contrôlé de personnes parlant l'anglais des États-Unis, ou i18n n'était pas quelque chose que nous avions le temps. Donc, je cherche des conseils ou des histoires de guerre les gens ont de faire des logiciels plus localisés dans les projets du monde réel.

Créé 04/08/2008 à 01:08
source utilisateur
Dans d'autres langues...                            


11 réponses

voix
48

Il a été un certain temps, donc ce n'est pas exhaustive.

Jeux de caractères

Unicode est grande, mais vous ne pouvez pas vous en sortir avec en ignorant d'autres jeux de caractères. Le caractère par défaut défini sous Windows XP (en anglais) est Cp1252. Sur le web, vous ne savez pas ce qu'est un navigateur vous envoyer (si tout va bien votre conteneur traitera plus de cela). Et ne soyez pas surpris quand il y a des bugs dans une implémentation particulière que vous utilisez. Les jeux de caractères peuvent avoir des interactions intéressantes avec les noms de fichiers quand ils se déplacent entre machines.

Cordes traduction

Les traducteurs sont, en général, pas les codeurs. Si vous envoyez un fichier source à un traducteur, ils le briser. Les chaînes doivent être extraites des fichiers de ressources (par exemple, les fichiers de propriétés en Java ou DLL de ressources dans Visual C ++). Les traducteurs doivent être des fichiers étant donné que difficiles à briser et des outils qui leur permettent de ne pas les casser.

Les traducteurs ne savent pas où les chaînes viennent d'un produit. Il est difficile de traduire une chaîne sans contexte. Si vous ne fournissez pas de directives, la qualité de la traduction souffrira.

Alors que sur le sujet du contexte, vous pouvez voir la même chaîne jusqu'à des cultures « foo » en plusieurs fois et je pense qu'il serait plus efficace d'avoir toutes les instances du point d'interface utilisateur pour la même ressource. C'est une mauvaise idée. Les mots peuvent être très sensible au contexte dans certaines langues.

Traduire les chaînes coûte de l'argent. Si vous relâchez une nouvelle version d'un produit, il est logique de récupérer les anciennes versions. Avoir des outils pour récupérer les chaînes de vos anciens fichiers de ressources.

concaténation de chaîne et la manipulation manuelle des chaînes doivent être réduites au minimum. Utilisez les fonctions de format, le cas échéant.

Les traducteurs doivent être en mesure de modifier les raccourcis clavier. Ctrl+ PEst imprimé en anglais; les Allemands utilisent Ctrl+ D.

Si vous avez un processus de traduction qui nécessite quelqu'un de couper manuellement et les chaînes de coller à tout moment, vous demandez des ennuis.

Les dates, heures, Calendriers, Monnaie, Nombre formats, fuseaux horaires

Ceux-ci peuvent tous varier d'un pays à l'autre. Une virgule peut être utilisé pour désigner décimales. Les temps peuvent être en notation 24hour. Pas tout le monde utilise le calendrier grégorien. Vous devez être trop ambigu,. Si vous prenez soin d'afficher les dates que MM / JJ / AAAA pour les Etats-Unis et JJ / MM / AAAA pour le Royaume-Uni sur votre site, les dates sont ambiguës à moins que l'utilisateur sait que vous l'avez fait.

surtout Monnaie

Les fonctions fournies dans les paramètres régionaux des bibliothèques de classes vous donnera le symbole de la monnaie locale, mais vous ne pouvez pas tenir une livre (sterling) ou symbole de l'euro devant une valeur qui donne un prix en dollars.

Les interfaces des utilisateurs

Mise en page doit être dynamique. Non seulement sont des chaînes susceptibles de doubler la longueur sur la traduction, l'ensemble de l'interface utilisateur peut avoir besoin d'être inversée (en hébreu, en arabe), de sorte que les contrôles vont de droite à gauche. Et c'est avant d'arriver à l'Asie.

Test avant la traduction

  • Utiliser l'analyse statique de code pour localiser les problèmes. Au strict minimum, tirer parti des outils intégrés dans votre IDE. (Utilisateurs Eclipse peuvent aller à Fenêtre> Préférences> Java> Compiler> Erreurs / avertissements et vérifier les chaînes non externalisées.)
  • Smoke test en simulant la traduction. Il est difficile de ne pas analyser un fichier de ressources et de remplacer des chaînes avec une version traduite pseudo qui double la longueur et insère des caractères funky. Vous ne devez pas parler une langue à utiliser un système d'exploitation à l'étranger. Les systèmes modernes devraient permettre de vous connecter en tant qu'utilisateur étranger avec des chaînes traduites et locale à l'étranger. Si vous êtes familier avec votre système d'exploitation, vous pouvez comprendre ce que fait ce sans connaître un seul mot de la langue.
  • cartes de clavier et les références de jeu de caractères sont très utiles.
  • Virtualisation serait très utile ici.

Les questions non techniques

Parfois, vous devez être sensible aux différences culturelles (infraction ou incompréhensions peuvent entraîner). Une erreur que vous voyez souvent l'utilisation de drapeaux comme repère visuel du choix d'une langue du site ou de la géographie. Sauf si vous voulez que votre logiciel de déclarer les côtés dans la politique mondiale, c'est une mauvaise idée. Si vous étiez français et a offert l'option pour l'anglais avec le drapeau de Saint-George (le drapeau de l'Angleterre est une croix rouge sur fond blanc), cela pourrait créer la confusion chez de nombreux anglophones - assumer des problèmes similaires se poseront avec les langues étrangères et les pays . Les icônes doivent être vérifiés pour la pertinence culturelle. Qu'est-ce qu'un pouce vers le haut ou une coche verte signifie? Le langage doit être relativement neutre - les utilisateurs d'adressage d'une manière particulière peut être acceptable dans une région, mais considéré comme impoli dans un autre.

Ressources

C ++ et Java programmeurs peuvent trouver le site Web de soins intensifs utile: http://www.icu-project.org/

Créé 04/08/2008 à 18:58
source utilisateur

voix
15

Certaines choses amusantes:

  1. Avoir un PHP et MySQL application qui fonctionne bien avec l'allemand et le français, mais doit maintenant soutenir russe et chinois. Je pense que je passe la parole à .NET, comme le support Unicode PHP est - à mon avis - pas vraiment bon. Bien sûr, jongler avec autour utf8_de / encode ou les fonctions mbstring-est amusant. Presque aussi amusant que Freddy ayant Krüger que vous visitez la nuit ...

  2. Se rendant compte que certaines langues sont beaucoup plus verbeux que d'autres. Allemand est beaucoup plus prolixe que l'anglais en général, et de voir comment la version allemande détruit l'interface utilisateur, car trop peu d'espace a été alloué était pas amusant. Certains produits ont gagné une certaine notoriété pour leurs moyens créatifs de travailler autour de cela, avec « Schw.Tr.d.Le.En.W. » Oblivion étant mémorable :-)

  3. Jouer avec les formats de date, Woohoo! Oui, il y a effectivement des gens dans le monde qui utilisent les formats de date où le jour va au milieu. Sooooo beaucoup de plaisir à essayer de savoir ce que 07/02/2008 est censé signifier, simplement parce que certains utilisateurs pourraient croire qu'il pourrait être de 2 Juillet ... Mais là encore, les gars sur l'étang peut croire la même chose sur les utilisateurs qui ont mis la mois au milieu :-P, en particulier parce qu'en anglais, 2 Juillet sonne beaucoup mieux que 2ème Juillet, quelque chose qui ne s'applique pas neccessarily à d'autres langues (par exemple en allemand, vous ne dira jamais Juli 2 mais toujours Zweiter Juli). J'utilise 2008-02-07 chaque fois que possible. Il est clair que ce moyens 7 Février et trie correctement, mais jj / mm par rapport mm / jj peut être un problème vraiment délicat.

  4. Anoter chose amusante, des formats numériques ! 10.000,50 vs 10,000.50 contre 10 000,50 contre 10'000,50 ... Ceci est mon plus grand cauchemar en ce moment, avoir à supporter un environent multi-culturelle , mais ne pas avoir un moyen de savoir de manière fiable ce format numérique de l'utilisateur utilisera.

  5. Formel ou informel. Dans une langue, il y a deux façons d'aborder les gens, d'une manière formelle et d'une manière plus informelle. En anglais, vous venez de dire « vous », mais en allemand vous devez décider entre le « Sie » et « Du » informel formel, même pour le français Tu / Vous. Il est généralement un pari sûr de choisir la voie officielle, mais cela est facilement négligé.

  6. Calendriers. En Europe, le premier jour de la semaine est le lundi, alors que dans les Etats-Unis, il est dimanche. Widgets Calendrier sont gentils. Afficher un calendrier avec dimanche à gauche et à droite samedi à un utilisateur européen n'est pas si gentil, il les confond.

Créé 04/08/2008 à 01:35
source utilisateur

voix
8

Je travaillais sur un projet pour mon employeur précédent qui a utilisé .NET, et il y avait construit au format .resx nous avons utilisé. Nous avions essentiellement un fichier qui avait toutes les traductions dans le fichier .resx, puis plusieurs fichiers avec différentes traductions. La conséquence de ceci est que vous devez être très diligent à faire en sorte que toutes les chaînes visibles dans l'application sont stockés dans le .resx, et à tout moment l'un est changé, vous devez mettre à jour toutes les langues que vous soutenez.

Si vous obtenez paresseux et n'avisez pas les personnes en charge des traductions, ou vous intégrez des chaînes sans passer par votre système de localisation, ce sera un cauchemar pour essayer de le corriger plus tard. De même, si la localisation est une réflexion après coup, il sera très difficile à mettre en place. En bout de ligne, si vous n'avez pas toutes les chaînes visibles stockées à l'extérieur dans un endroit standard, il sera très difficile de trouver tout ce qui a besoin d'être localisé.

Une autre note, très strictement éviter concaténer des chaînes visibles directement, comme

String message = "The " + item + " is on sale!";

, Vous devez plutôt utiliser quelque chose comme

String message = String.Format("The {0} is on sale!", item);

La raison est que les différentes langues souvent l'ordre des mots différemment, et les chaînes concaténer directement auront besoin d'une nouvelle construction de fixer, mais si vous avez utilisé une sorte de mécanisme de remplacement de chaîne comme ci-dessus, vous pouvez modifier votre fichier .resx (ou quelle que soit la localisation les fichiers que vous utilisez) pour la langue spécifique qui doit réorganiser les mots.

Créé 04/08/2008 à 01:23
source utilisateur

voix
5

Je viens d' écouter un podcast de Scott Hanselman ce matin, où il parle de l' internationalisation, en particulier les choses vraiment difficiles, comme le turc (avec ses quatre i de) et thaïlandais. En outre, Jeff Atwood avait un message :

Créé 04/08/2008 à 16:04
source utilisateur

voix
3

En plus de tous les conseils précédents, rappelez-vous que i18n ce n'est pas seulement de changer les mots pour leur équivalent dans d'autres langues, en particulier pour les langues non latines alphabets (coréen, arabe) qui écrit de droite à gauche, de sorte que toute l'interface utilisateur devra se conformer, comme

  • objet 1
  • point 2
  • point 3

devrait être

texte arabe 1 -

texte arabe 2 -

texte arabe 3 -

(Inversée liste à puces ne semble pas fonctionner: P)

qui peut être un cauchemar de l'interface utilisateur si votre système doit appliquer les modifications dinamically une fois que l'utilisateur modifie la langue utilisée.

Une autre chose très difficile est de tester différentes langues, non seulement pour l'exactitude de la parole, mais puisque les langues comme le coréen ont généralement plus le type de police pour leurs caractères cela peut conduire à des bogues spécifiques à la langue (comme le texte « SAVE » sur un bouton étant plus grand que le bouton lui-même pour une langue).

Créé 22/09/2008 à 00:44
source utilisateur

voix
2

L'une des choses les plus drôles à découvrir: italique et gras makrup texte ne fonctionne pas avec des caractères CJK (chinois / japonais / coréen). Ils deviennent tout simplement illisible. (OK, je ne pouvais pas les lire vraiment avant soit, mais surtout bolding crée juste des taches d'encre)

Créé 14/10/2008 à 13:39
source utilisateur

voix
1

Un autre défi sera d'accepter l'entrée de vos utilisateurs. Dans de nombreux cas, cela est facilité par le traitement d'entrée fourni par le système d'exploitation, tels que Windows IME, qui fonctionne de manière transparente avec des widgets de texte commun, mais cette installation ne sera pas disponible pour tous les besoins.

Créé 27/12/2008 à 07:48
source utilisateur

voix
1

Je suggère d'utiliser quelque chose comme 99translations.com pour maintenir vos traductions. Sinon , vous ne serez pas en mesure de dire ce que vos traductions sont à jour dans toutes les langues.

Créé 27/12/2008 à 05:05
source utilisateur

voix
1

Je pense que tous ceux qui travaillent dans l'internationalisation devrait se familiariser avec le référentiel de données Common Locale, qui est maintenant un sous-projet d'Unicode:

Common Locale Data Repository

Ces gens travaillent dur pour établir une ressource standard pour toutes sortes de questions i18n: monnaie, noms géographiques, des tonnes de choses. Tout projet qui maintient son propre base de données locales, étant donné que ce projet existe est assez cinglé, à mon humble avis.

Créé 18/09/2008 à 20:25
source utilisateur

voix
0

Une chose que personne n'ont encore parlé est des chaînes avec une partie de warying comme dans « L'unité arive en 5 jours » ou « Lundi quelque chose se passe. » où 5 et lundi changera selon l'état. Il est pas une bonne idée de diviser les en deux et les concaténer. Avec seulement une partie variable et une bonne documentation que vous pourriez sortir avec elle, avec deux parties différentes, il y aura une langue qui preferes pour changer l'ordre d'entre eux.

Créé 07/10/2008 à 11:56
source utilisateur

voix
0

Un site que j'utilise a une méthode de traduction du propriétaire appelle « traduction wiki + machine ». Ceci est un site à base communautaire est donc évidemment différente aux besoins des entreprises.

http://blog.bookmooch.com/2007/09/23/how-bookmooch-does-its-translations/

Créé 10/09/2008 à 16:12
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more