2009-08-01 6 views

Répondre

6

Je suggère stocker des propriétés de l'interface utilisateur dans les fichiers de ressources (.resx) et ont le CurrentUICulture à la langue spécifique pour chaque demande:

<globalization culture="auto" uiCulture="auto" /> 

Si votre site Web est la plupart du temps l'application axée sur le contenu plutôt que d'une entreprise orientée que diffère fortement en fonction de la langue, vous pouvez envisager de créer un ensemble distinct de pages pour chaque langue et rediriger l'utilisateur en fonction d'un cookie ou d'une propriété de profil ou Request.UserLanguages. Il n'est pas possible de donner une prescription générale pour le problème de la mondialisation. La meilleure architecture diffère considérablement en fonction de la nature de chaque projet individuel.

+0

Le site Web est orienté contenu – Ahmed

+0

Quelle est la meilleure architecture pour développer ceci? – Ahmed

+0

Si le contenu et l'orientation de la page diffèrent significativement pour chaque langue (et qu'il n'y a pas de relation directe entre chaque élément de l'interface utilisateur), je pense qu'il est préférable d'avoir un jeu de pages aspx pour chaque langue. logique en utilisant une bibliothèque de classes. –

1

NLS est une exigence récurrente, et souvent lorsque la question sur la fonctionnalité NLS est posée, les personnes demandant ne sont pas conscients de la complexité. NLS généralement divisé en (au moins) 2 zones:

  • NLS dans l'interface utilisateur

  • NLS dans les données

Dans votre cas, un site basé sur le contenu, vous pouvez même divisé le deuxième point en - données générées par le fournisseur de site Web et - données générées par l'utilisateur. Pour UI NLS, vous pouvez utiliser le mécanisme .resx mentionné par Mehrdad, mais sachez que chaque travail de localisation nécessite toujours d'éditer le code source (c'est-à-dire les fichiers resx). Quand j'ai dû développer une application web multi-langes, j'ai donc choisi de gérer l'exigence NLS dans mon code, et j'ai créé quelques tables spécifiques à NLS qui reflétaient l'interface utilisateur (ce qui était la motivation pour écrire graspx : extrait tous les textes visibles de la source aspx, tels que Label.Text etc). Il existe une application distincte pour télécharger la définition de l'interface utilisateur et laisser les traducteurs faire leur travail. L'application principale possède une fonctionnalité d'importation pour les textes traduits. Le modèle de données ressemble à ceci: Page - PageItems - PageItemTexts (avec une référence à une langue), donc c'est assez simple. Le même modèle peut être appliqué au contenu: au lieu de Page et PageItems, vous avez simplement des ContentItems, qui contiennent uniquement un PK et un identifiant, et une table contenant le texte des ContentItems associés à une langue. En outre, vous pouvez définir une sorte de chaîne de repli de langue, de sorte qu'un texte qui n'est pas encore traduit soit affiché dans la langue d'origine ou dans une autre langue (proche).

La langue affichée peut être sélectionnée par la langue fournie par le navigateur (HTTP_ACCEPT_LANGUAGE), mais devrait être autorisée à être écrasée par l'utilisateur (par exemple via une liste déroulante). La langue sélectionnée doit être stockée dans une variable de session, dans un cookie ou dans la base de données (pour les utilisateurs enregistrés).

Questions connexes