Question

Je pense que plusieurs d'entre nous ont déjà travaillé sur un projet dans lequel non seulement l'interface utilisateur, mais également les données doivent être prises en charge dans différentes langues. Par exemple, être capable de fournir et de stocker une traduction pour ce que j'écris ici.

De plus, je pense également que plusieurs d'entre nous ont des événements à déclenchement temporel (tels que l'expiration de l'accès d'un membre) où l'emplacement de l'utilisateur doit être pris en compte pour calculer, par exemple, minuit en fonction du fuseau horaire approprié.

Enfin, il est également nécessaire de prendre en charge les interfaces utilisateur de droite à gauche selon certaines langues et d’utiliser différents encodages lors de la lecture des fichiers de données soumis (analyse du texte et des données Excel, par exemple)

.

Actuellement, je stocke toutes mes traductions pour toutes mes entités sur une seule table (ce qui est moins pratique car il est très difficile de se trouver soi-même lors de requêtes SQL pour examiner un problème), les traductions de l'interface utilisateur étant principalement basées sur des assemblys satellites et ne prend en charge ni les fuseaux horaires ni la conception de droite à gauche.

Quelles sont vos expériences face à ces défis?

[Modifier]

Je suppose que la plupart des gens pensent que ce niveau d’exigence de multiculture est comparable à la construction d’un énorme projet. En fait, si vous parlez d’un sondage en ligne où:

  1. Les réponses ne seront collectées que jusqu'au minuit
  2. Définition du questionnaire et partie de les réponses proviennent d'un fichier texte (dans n'importe quelle langue) ainsi que traductions
  3. Les questions et les options de réponse doivent être affiché en plusieurs langues, selon qui y accède
  4. Les rapports doivent également être affichés et généré dans plusieurs différents langues

Comme on peut le constater, il n’est pas nécessaire d’aller trop loin dans une application pour avoir ce type d’exigences.

[Edit2]

Je viens de découvrir que ma question est un doublon

i18n dans vos projets

La première réponse (lorsqu’on commande par vote) est tellement compréhensive que je dois en mettre au moins une partie en œuvre un jour.

Était-ce utile?

La solution

Soyez très très prudent. D'après ce que vous dites sur les fonctionnalités d'i18n que vous essayez d'implémenter, je me demande si vous dépassez vos objectifs.

Notez que les applications Web big boy (eBay, amazon.com, yahoo, bbc, par exemple) fournissent des applications séparées dans chaque langue qu’elles souhaitent prendre en charge. Chacune de ces applications Web consomme un ensemble de services de base commun. Ne soyez pas surpris si les besoins de deux pays différents qui parlent même la même langue (par exemple, le Royaume-Uni et les États-Unis) sont suffisamment différents pour que vous ayez besoin d'une application distincte pour chacun.

D'autre part, vous pourriez avoir besoin de devenir comme le prochain amazon.com. Il est difficile de fournir une application Web réussie dans une langue et encore moins. Vous ne devez pas avoir peur de favoriser un groupe d'utilisateurs (par exemple vos locuteurs de langue asiatique) par rapport à d'autres si cela est logique pour les besoins de votre application Web.

Autres conseils

Allez lentement.

Réfléchissez à tout, puis réfléchissez vraiment à ce que vous faites encore. N'oubliez pas que plus vous en ajoutez (comme de droite à gauche), plus votre cycle d'assurance qualité sera long.

La principale pièce de votre puzzle consistera en une utilisation intensive des interfaces côté code et en une source de données transmise par un traducteur dans la ou les langues devant être prises en charge, ou bien des sources de données distinctes pour chaque langue.

Les problèmes de temps peuvent être traités par les interfaces, car vous voudrez probablement que les choses fonctionnent de la même manière, mais que les détails de la mise en œuvre diffèrent. Dans une large mesure, un processus de réflexion similaire peut être appliqué à la création de l'interface lors de son ajustement pour prendre en charge différentes langues. En fin de compte, le skinning correspond exactement à ceci: le contenu à skinner est l'interface et l'apparence est la mise en œuvre.

Faites ce dont vos utilisateurs ont besoin. Par exemple, la plupart des programmeurs comprennent l'anglais, cela n'a aucun sens de traduire les publications sur ce site. Si plusieurs de vos utilisateurs ont besoin d'une traduction, ajoutez une nouvelle colonne de table avec l'ID de langue et une autre colonne pour lier une ligne traduite à sa version d'origine. Si votre auditoire cible contient les utilisateurs du Moyen-Orient, implémentez Droite vers la gauche. Si la précision de l'heure est critique jusqu'à une heure, ajoutez une colonne de fuseau horaire à la table des utilisateurs, etc.>

Si vous utilisez * NIX, utilisez gettext . La plupart des langues que j'ai utilisées ont un certain niveau de support. PHP est très bon, par exemple.

Je vais décrire ce qui a été fait dans mon projet (ce n’était pas mon architecture d’origine mais j’ai aimé quand même)

Assistance à la traduction

Les textes à traduire ont été divisés en trois catégories différentes:

  1. Texte d'erreur: comme des erreurs qui se produisent au plus profond de la couche de gestion de l'application
  2. UI Text: texte affiché dans l'interface utilisateur (libellés, boutons, titres de grille, menus)
  3. Texte défini par l'utilisateur: texte devant être traduit en fonction des préférences de l'utilisateur final (l'utilisateur crée une question dans une enquête et peut également créer une version traduite de cette enquête)

Pour chaque catégorie différente, le schéma utilisé pour fournir un service de traduction est différent - nous avons donc:

  1. Texte d'erreur: une bibliothèque avec des fonctions statiques permettant d'accéder aux fichiers de ressources
  2. Texte de l'interface utilisateur: Un "Helper". classe qui, liée au moteur de vue, fournit des traductions à partir d'assemblys distants
  3. Texte défini par l'utilisateur: table de la base de données fournissant les traductions (en fonction du typeID de l'entité traduite et de l'identificateur d'objet) et qui est liée à l'entité via une relation 1 x N

Je n'ai toutefois pas attaqué les autres problèmes évidents, tels que le traitement des fuseaux horaires, différentes dispositions et la traduction des images (si cela est vraiment nécessaire). Est-ce que quelqu'un a abordé ce problème d'une manière différente?

Quelqu'un a-t-il déjà abordé les autres problèmes d'I18n?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top