2009-08-24 17 views
0

Je développe mon premier site C# multilingue et tout va bien, sauf pour un aspect crucial. Je ne suis pas sûr à 100% quelle est la meilleure option pour stocker des chaînes (généralement des mots simples) qui seront traduites par le code de mon code derrière les pages.Dois-je stocker le contenu de localisation dans l'état de l'application

Sur la page d'accueil du site, je vais utiliser les fichiers de ressources asp.net pour le libellé des pages. Cette partie est bien. Cependant, ce site fera des appels XML et les réponses XML ne seront jamais qu'en anglais. On m'a donné une feuille d'Excel avec tous les mots qui seront retournés par le XML cassé dans les différentes langues mais je ne suis pas sûr de la meilleure façon de stocker/accéder à cette information. Il y a environ 80 mots x 7 langues.

Je pense à la création d'un objet dictionnaire pour chaque langue créée par mon fichier global.asax au moment de l'exécution de l'application et je le garde juste en mémoire. Le côté positif pour cela est que l'objet dictionnaire ne devra être créé qu'une seule fois (jusqu'à ce que IIS redémarre) et puisse être consulté par n'importe quel utilisateur sans avoir besoin d'être reconstruit mais l'inconvénient est que j'ai 7 objets dictionnaire constamment stockés en mémoire. Le serveur est un Win 2008 64bit avec 4 Go de RAM donc devrais-je même être préoccupé par la mémoire prise en utilisant cette méthode?

Selon vous, quel est le meilleur moyen de stocker/récupérer les différents mots de langue qui seraient utilisés par tous les utilisateurs?

Merci de votre participation.

Rich

Répondre

1

D'après ce que vous dites, vous cherchez à 560 mots qui doivent varier en fonction de l'environnement local. C'est une goutte dans l'océan. La méthode de fichier de ressources que vous avez envisagée est adaptée à l'objectif et je recommanderais de les utiliser. Ils intègrent des contrôles de sorte que vous en tirerez le meilleur parti. Si cela vous a dérangé, vous pourriez les avoir sur un cache coulissant, c'est-à-dire glisser le cache de 20 minutes par exemple, mais je ne vois rien de mal dans votre choix dans cette solution.

OMO

Cheers,

Andrew

P.S. Avoir une lecture à travers cela, pour voir comment vous pouvez trouver et lier des valeurs dans différents fichiers de ressources aux contrôles et littéraux et utiliser par programmation.

http://msdn.microsoft.com/en-us/magazine/cc163566.aspx

+0

Merci pour votre aide. Mon problème est que je cherche juste à localiser les chaînes. Ceux-ci ne seront pas liés à des contrôles, donc je ne pense pas que je peux utiliser les fichiers resx pour cela. Puis-je? –

+0

Que utiliserez-vous les chaînes localisées pour comme dans comment allez-vous les afficher à l'utilisateur? –

+0

Je pensais que sur le chargement de la page j'appellerais simplement l'objet du dictionnaire pour la langue que je veux en fonction de la langue sélectionnée et trouver la clé qui correspond à la chaîne que je cherche. Par exemple: si je voulais remplacer le mot "Door" renvoyé par le XML et l'afficher en français, j'aurais quelque chose comme: Dictionary XMLWording = (Dictionnaire ) Application ["FrenchXMLWording "]; alors quelque chose comme XMLWording ["Door"]; écrire sur l'écran. J'espère que cela a du sens;) –

0

Tant que vous êtes au courant de l'impact de le faire alors oui, le stockage de ces données dans la mémoire serait bien (aussi longtemps que vous avez assez de le faire). Une fois que vous savez ce qui est approprié pour l'utilisateur actuel, le lancer dans la mémoire serait bien. Vous pouvez cependant regarder quelque chose comme MemCached Win32 ou Velocity pour décharger le stockage sur un autre serveur d'applications. Utilisez ceci même sur votre application locale pour l'instant de cette façon quand il est temps de pousser ceci à un autre serveur ou de développer votre application vous avez une séparation claire des soucis définis à votre couche de mise en cache. Et gardez à l'esprit que plus vous supportez de langues, plus vous stockez de choses en mémoire. Gardez un oeil sur la quantité de données stockées dans la mémoire de votre serveur d'application solitaire, car cela pourrait devenir écrasant dans le temps. Assurez-vous également que les clés que vous utilisez sont spécifiques à la langue. Sinon, vous pourriez trouver que vous stockez un menu en allemand pour un utilisateur anglais.