43 votes

Considérations de conception pour l'internationalisation

J'ai lu Joël article sur Unicode et j'ai l'impression que j'ai au moins une connaissance de base de l'internationalisation à partir d'un jeu de caractères de la perspective. En plus de la lecture de cette question, j'ai aussi fait un peu de mes propres recherches sur l'internationalisation en ce qui concerne les considérations relatives à la conception, mais je ne peux pas aider mais pensent qu'il est beaucoup plus là-bas que je ne sais juste pas ou ne savent pas à demander.

Certaines des choses que j'ai appris:

  • Certaines langues lues de droite à gauche au lieu de gauche à droite.
  • Le calendrier, les dates, les heures, les devises, et les nombres sont affichés différemment à partir de la langue.
  • Le Design devrait être suffisamment souple pour accueillir beaucoup plus de texte, parce que les certaines langues sont beaucoup plus détaillé que d'autres.
  • Ne pas prendre des icônes ou des couleurs pour accordée lorsqu'il s'agit de leur signification sémantique, car cela peut varier à partir d'une culture à l'autre.
  • Géographique de la nomenclature varie de une langue à l'autre.

Là où j'en suis:

  • Ma conception est suffisamment souple pour accueillir beaucoup plus de texte.
  • Je traduire automatiquement chaque chaîne, y compris les messages d'erreur et les boîtes de dialogue d'aide.
  • Je ne suis pas venu à un point où J'en ai eu besoin pour afficher les unités de temps, monnaie ou des chiffres, mais je vais être il y a peu de temps et vous devrez développer une solution.
  • Je suis en utilisant le caractère UTF-8 à travers le conseil d'administration.
  • Mes menus et les listes dans l'application sont triés par ordre alphabétique pour chaque langue pour faciliter la lecture.
  • J'ai une balise analyseur que des extraits les balises par le filtrage des mots vides. L' arrêter la liste des mots est un langage spécifique et peut être échangé.

Ce que j'aimerais en savoir plus sur:

  • Je suis le développement de télécharger une application web PHP, donc tout conseil en ce qui concerne PHP serait grandement apprécié. J'ai développé mon propre cadre de référence et je ne suis pas intéressé dans l'utilisation d'autres cadres en ce moment.
  • Je sais très peu de choses sur la non-occidentaux les langues. Sont spécifiques les considérations qui doivent être prises en compte le fait que je n'ai pas mentionné ci-dessus? Aussi, comment puis-PHP array les fonctions de tri poignée de non-ouest personnages?
  • Avez-vous des pièges qui vous avez vécu dans la pratique? Je suis à la recherche en termes à la fois de l'interface graphique et le code de l'application elle-même.
  • Obtenir des conseils pour travailler avec la date et l'heure s'affiche? Est-il répartition selon la région ou de la langue?
  • J'ai vu beaucoup de projets et de sites laissez-leur fournir des communautés traduction pour leurs applications et le contenu. Recommandez-vous cette et quelles sont les bonnes stratégies pour vous assurer que vous avez une bonne la traduction?
  • Cette question est fondamentalement la mesure de ce que je connais l'internationalisation. Que n'ai-je pas sais que je ne sais pas si je doit rechercher dans d'autres?

Edit: j'ai ajouté la générosité parce que je voudrais avoir plus d'exemples du monde réel de l'expérience.

56voto

Adrian Grigore Points 15993

Notre jeu Gemsweeper a été traduit en 8 langues différentes. Certaines choses que j'ai apprises au cours de ce processus:

  • Si le traducteur est donnée simple phrase à traduire, assurez-vous qu'il sait à propos du contexte de chaque phrase est utilisée dans. Sinon, il pourrait fournir une traduction possible, mais pas celui que vous voulez dire. Des outils tels que Babelfish traduire sans comprendre le contexte, c'est pourquoi le résultat est généralement très mauvais. Juste essayer de traduire n'importe quel texte non négligeable de l'anglais à l'allemand et à l'arrière et vous verrez ce que je veux dire.

  • Les phrases qui devrait être traduit ne doit pas être divisé en différentes parties pour la même raison. C'est parce que vous avez besoin afin de maintenir le contexte (voir le point précédent) et parce que certaines langues peuvent avoir les variables au début ou à la fin de la phrase. Utiliser des espaces réservés à la place de la rupture de la phrase. Par exemple, au lieu de

"C'est l'étape" "de nos en 15 étapes tutoriel"

Écrire quelque chose comme:

"C'est l'étape %1 de nos 15 étape tutoriel"

et remplacez l'espace réservé par programmation.

  • Ne vous attendez pas le traducteur d'être drôle ou créatif. Il n'est généralement pas assez motivé pour le faire, à moins que vous nommez le particulier les passages de texte et de lui verser en sus. Par exemple, si vous avez de mot et de blagues dans votre langue actifs, dites-le traducteur dans une note de côté de ne pas essayer de les traduire, mais de les laisser ou de les remplacer par un plus sombre de la phrase à la place. Sinon, le traducteur sera probablement traduire la blague mot par mot, ce qui entraîne généralement un non-sens complet. Dans notre cas, nous avons eu un traducteur et un blague écrivain pour la plus critique de la traduction (anglais).

  • Essayez de trouver un traducteur dont la langue maternelle est la langue qu'il va traduire votre logiciel, et non l'inverse. Sinon il est susceptible d'écrire un texte qui pourrait être correct, mais des sons étranges ou à l'ancienne pour les locuteurs natifs. Aussi, il doit être vivant dans le pays que vous ciblez avec votre traduction. Par exemple, un de langue allemande gars de la Suisse ne serait pas un bon choix pour une traduction en allemand.

  • Si à tout possible, demandez à l'un de vos bêta publique utilisateurs de test qui comprend la traduction de vérifier traduit de l'actif et la réalisation du logiciel. Nous avons eu quelques très bonnes et de très mauvaises traductions, selon la personne qui les a fournis. Selon certains de nos utilisateurs, la traduction suédoise a été total du charabia, mais il était trop tard pour faire quoi que ce soit.

  • Sachez que, pour chaque version mise à jour avec de nouvelles fonctionnalités, vous devrez avoir votre langues actifs traduit. Cela peut créer de graves frais généraux.

  • Être conscient que les utilisateurs finaux devront attendre le support technique pour parler leur langue, si votre logiciel est traduit. Une fois de plus, Babelfish, ne sera probablement pas le faire.

Edit - Certains plus de points

  • Faire de la commutation entre les localisations aussi facile que possible. Dans Gemsweeper, nous avons un raccourci clavier pour basculer entre les différentes langues. Il rend les tests plus faciles.

  • Si vous allez utiliser exotiques, assurez-vous que ces inclure des caractères spéciaux. Les polices que nous avons choisi pour Gemsweeper étaient très bien pour du texte en anglais, mais nous avons dû ajouter quelques caractères à la main qui n'existent qu'en allemand, français, Portugais, suédois,...

  • Ne pas le code de votre propre structure de localisation. Vous êtes probablement beaucoup mieux avec un framework open source comme Gettext. Gettext prend en charge les fonctionnalités comme les variables à l'intérieur de phrases ou de la pluralisation et est solide comme un roc. Ressources localisées sont compilés, donc personne ne peut les manipuler. De Plus, vous pouvez utiliser des outils comme Poedit pour la traduction de vos fichiers / vérification de quelqu'un d'autre de la traduction et de s'assurer que toutes les chaînes sont correctement traduites et encore jusqu'à ce jour dans le cas où vous modifiez le code source sous-jacent. J'ai essayé les deux, rouler mes propres et l'utilisation de Gettext à la place, et je dois dire que Gettext plus PoEdit ont été supérieure.

Modifications - Encore Plus De Points

  • Comprendre que les différentes cultures ont différents styles et les formats de date. Schémas de numérotation ne sont pas seulement différents par la culture, mais aussi par objectif au sein de cette culture. En FR-US, vous pouvez formater un nombre '-1234'; '-1,234" ou (1,234) en fonction de ce que le but du numéro. Comprendre d'autres cultures faire la même chose.

  • Savoir où vous êtes l'obtention de votre mondialisation de l'information. E. g. Windows a des paramètres pour CurrentCulture, UICulture, et InvariantCulture. Comprendre ce que signifie chacun d'eux et comment il interagit avec votre système (ils ne sont pas aussi évidente qu'on pourrait le croire).

  • Si vous allez faire de l'Asie de la traduction, vraiment faire vos devoirs. Est-langues Asiatiques ont assez peu de différences de langues, cliquez ici. En plus d'avoir plusieurs alphabets qui sont utilisées simultanément, ils peuvent utiliser différents systèmes de mise en page (top-down) ou basé sur une grille. Aussi les numéros dans les langues de l'Asie peuvent être très différentes. Dans l'en-NOUS, vous ne les systèmes de changement de conditions limitées (par exemple, 1 contre 1), il existe numériques supplémentaires considérations d'ailleurs juste de virgule et de point.

11voto

Epcylon Points 2548

Lorsque nous avons travaillé sur l'i18n/l10n questions de Dreamfall et Age of Conan, nous avons rencontré quelques problèmes qui sont la peine de garder à l'esprit. Certains de ces nous avons résolu, certains ont été résolus pour nous, et certains, nous avons travaillé autour. Certains nous n'avons jamais résolu...

  • Assurez-vous que tous les outils et toutes votre code prend en charge tous les jeux de caractères que vous souhaitez utiliser, et vérifier que l'hypothèse que deux fois au cours du projet et un couple plusieurs fois pour être sûr.

  • Assurez-vous que vous utilisez une police qui prend en charge toutes les langues que vous souhaitez utiliser. La plupart des polices qui prétendent être en unicode ne sont unicode dans le sens que les personnages qu'il a est à la bonne codepoint. Cela ne signifie pas qu'elle a des caractères utilisables pour tous les codepoints.

  • Habillage de texte n'est pas seulement à des espaces, comme certaines langues ne pas utilisez espace pour séparer les mots (chinois vient à l'esprit). Assurez-vous que votre habillage de texte routines de gérer le texte sans espaces à tous.

  • La manipulation pluriel correctement est délicate dans le cas faciles, et les damnés dur dans les cas les plus sérieux. Assurez-vous que vous en savez assez sur les langues que vous allez utiliser pour être en mesure d'écrire du code pour gérer le pluriel problème correctement. Gardez à l'esprit que l'anglais (et les autres "occidentaux" les langues sont parmi les plus faciles.

  • Jamais de pause, des phrases et de construire des chaînes de caractères avec eux pour s'adapter à une variable, la variable peut être placé ailleurs dans la phrase dans une langue différente. Utiliser des espaces réservés.

  • Gardez à l'esprit que pour certaines langues, la valeur de l'espace réservé peut changer la façon d'écrire la phrase. La grammaire est dur. Assurez-vous que vous avez un plan pour traiter avec elle. (En particulier, assurez-vous d'avoir un moyen de classer les valeurs que vous utilisez dans les espaces réservés en fonction du sexe, de temps, etc).

11voto

Javier Points 33134
  • Mes menus et les listes de application sont triés par ordre alphabétique pour chaque langue pour faciliter la lecture.

les listes doivent être triés, les menus ne le sont pas. gardez à l'esprit qu'un utilisateur peut choisir d'utiliser votre candidature dans plus d'une langue, il doit encore trouver partout à la même place.

la même avec les raccourcis clavier, si vous avez tout: ne pas les traduire.

aussi, n'oubliez pas que l'internationalisation et la traduction sont deux choses très différentes, de les gérer séparément.

8voto

paxdiablo Points 341644

Je tiens à faire les remarques suivantes - ce sont de certaines directives de l'entreprise où la classe 1 des produits sont traduits dans 31 lieux différents. En suivant ces lignes directrices nous a donné (notre équipe de développement plutôt que sur l'ensemble de l'entreprise) la plus grande productivité dans la traduction.

  • N'essayez pas de réutiliser des fragments de messages d'erreur. Par exemple, ne pensez pas que parce que vous avez deux erreurs "You selected the wrong menu item" et "That menu item is not yet available", vous pouvez extraire "menu item" dans un élément distinct et l'utiliser dans les deux endroits. Tous les messages doivent être autonomes que leurs traductions peuvent changer selon le contexte.

  • Utiliser un traducteur professionnel bien informé au sujet de la technologie. Si vous passez à proximité d'un service comme BabelFish, vous allez obtenir tout ce que vous méritez. Par exemple, "Microsoft Windows" est "Microsoft Windows" partout sur la planète, il ne devient pas "Microsoft Fenster" en Allemagne.

  • Essayez de ne pas inclure des variables dans vos messages (comme "The %1 has failed"%1 change de façon dynamique) depuis positions et, en effet, le sexe peut changer: "La table est rubbish" vs "L'Homme est drunk"ou "The red table" vs "La table rouge". Mieux vaut utiliser un nom générique annexes paramètres: "The item has failed [%1]".

  • Ne traduire que les choses que l'utilisateur s'attend à voir. Messages de Log dans un fichier journal (qui ne vous seront d'utilisation) doivent être en anglais (ou dans votre langue maternelle), ne traduit pas à quelque chose comme le Swahili que vous ne pouvez pas lire de toute façon.

  • Les Menus doivent être triés par fonctionnalité, pas d'ordre de classement des caractères.

  • Traduisible unités devraient être stockées en externe pour le code et chargé lors de l'exécution. Cela rend la traduction d'une question de juste à l'expédition hors du fichier externe, ne pas essayer d'incorporer les changements dans le milieu de code. Il a également fait de l'ajout d'autres langues plus facilement à l'avenir.

C'est assez pour l'instant. Mieux d'arrêter avant de tous s'endormir :-)

6voto

Malachi Points 475

Je n'ai pas grand chose à ajouter à la grande de réponses, mais voici quelques choses à considérer et à vérifier.

  • Ne pas faire de suppositions. C'est le fourre tout de la règle. Il est facile de supposer que les choses qui sont de la région ou de la langue spécifique et il est difficile de remarquer ces hypothèses.
  • Être très prudent avec les comparaisons de chaînes. Il y a certaines langues, comme le turc, qui a des lettres qui sont similaires à d'autres visuellement, mais qui sont différents.
  • Utiliser des pseudo traduction comme un essai à la fumée. Si vous lisez vos chaînes traduites à partir d'un fichier de ressources, de créer un pseudo traduit de la version du fichier qui est encore compréhensible pour vous, mais qui souligne l'importance de la capacité et de la capacité de chaque traduisible chaîne dans l'application. Par exemple, le pad une chaîne comme "Annuler" avec quelque chose comme "CancelXXXX!" de sorte qu'il est aussi large que votre allocation pour les chaînes traduites. Ensuite, vous pouvez effectuer un test pour vérifier que chaque chaîne va s'afficher entièrement. Le crédit supplémentaire pour le coller dans la plupart des complexes de caractères susceptibles d'être rendus à vérifier qu'il s'affiche correctement dans tous les lieux.
  • Ne faites pas d'hypothèses sur les touches du clavier. "ASDW" peut être un excellent contrôle de l'ensemble de touches pour les claviers QWERTY, mais le codage en dur qui le rend hostile, si ce n'est impossible, à utiliser pour les personnes avec d'autres dispositions de clavier.
  • Tester les différents paramètres de date, puis tester à nouveau. J'ai vu des problèmes en raison de quelque chose d'aussi petit qu'un format différent pour "AM/PM" dans les paramètres régionaux. Le jj/mm/aaaa vs jj/mm/aaaa vient aussi beaucoup, mais chaque paramètre, ici, peut importe.
  • L'essai de divers formats de nombre, puis tester à nouveau. Vous ne voulez pas dépendre de décimales ou de séparateurs de milliers, par exemple.
  • Test avec et sans que l'utilisateur connecté au serveur. Cela peut être plus spécifique de Windows, mais il est très facile d'obtenir un composant sur le serveur configuré de manière à ce qu'il utilise l'enregistrés dans les paramètres régionaux de l'utilisateur lorsqu'un utilisateur est connecté et régionaux par défaut paramètre lorsque l'utilisateur n'est pas connecté. Cela peut causer de l'étrange comportement intermittent.
  • Test avec diverses options régionales et linguistiques. Comme un exemple, non seulement les Fenêtres ont des paramètres régionaux et de langue, mais IE a son propre réglage de la langue. Le comportement d'un client IE avec en-us répertoriés en premier ne peut pas toujours être la même qu'avec fr-nz premier sur la liste, par exemple.
  • Assurez-vous que votre traducteur comprend les affaires et les langues, puis les recouper avec quelqu'un d'autre. Être très prudent tout moment vous utilisez l'application de la terminologie spécifique. Si votre programme utilise des mots précis pour signifier quelque chose de spécial dans l'application, assurez-vous qu'ils sont traduits dans une manière similaire dans tous les cas, y compris dans le texte de l'aide. Si vous avez des cibles de langage, vous pouvez même aller aussi loin que de traduire ces mots à l'avance et assurez-vous qu'ils ne se traduisent pas mal dans les langues cibles. C'est plus une recherche de produits de chose, mais cela peut faire une différence dans ce que les mots sont utilisés dans l'interface, et il est plus facile pour tout le monde si ces mots sont en place depuis le début. Vous aussi vous voulez éviter les idiomes qui peuvent ne pas s'appliquer.

Bon, j'avais plus de choses à dire que je ne le pensais...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X