[ASP.NET] Application Web internationale - probleme de langue

Je cherche a recommencer une application en asp.net, mais elle sera utilisé en francais, allemand, anglais, espagnole, russe et chinois.
Du coup je cherche des solutions pour mettre ce systeme en place.
Je suis tombé sur ça :
http://www.asp-php.net/tutorial/asp-php/ap…ngue.php?page=1

Si quelqu’un a d’autres idées ou d’autres experience dans ce genre de domaine je veux bien un peu d’info :slight_smile:

Comme pour une appli windows microsoft conseille :

  • Détection redirection : créer une appli disctincte pour chaque culture, détecter la culture de l’utilisateur, charger la page ciblée.
    Applis visées : beaucoup de texte à traduire, peu de composants exécutables.

  • Ajustement à l’exécution : une seule appli web, détecte la culture utilisateur, ajuste les résultats.
    Applis visées : simples, contenu limité.

  • Assemblages satellites : appli web qui stocke les textes dépendant de la culture dans des fichiers de ressources. Détection de la culture utilisateur chargement de l’assemblage satellite.
    applis visées : contenu généré à l’exécution, nombreux composants. -> ma favorite quoi qu’il arrive.

Tu peux donc reprendre ton appli en n’ajoutant que des fichiers de ressources. Avec resgen.exe on peut en créer et en modifier. Même modifier l’apparence des composants. Ce qui permet de refourguer le travail à un linguiste plutôt qu’à un dev.

Toi tu n’as qu’à placer un Request.UserLanguages[0] pour la langue utilisateur. Puis ajuster CurrentCulture à la culture utilisateur après tu connais les standards pour les fichiers de ressources .NET

je viens de dev un truc un peu similaire pour un site en PHP multilangues :smiley:

en gros j’ai une table qui stocke tous les textes pour les autres textes de n’importe quelle table de la base (les champs textes à traduire sont identifiés par un préfixe dans leur nom) : j’ai une class générique dont hérites chaque objet au final … cette class contient (entre autres) deux méthodes génériques adaptables automatiquement à tout objet permettant d’aller chercher les bons textes, en fonction de la langue en cours, dans la base, et d’initialiser correctement les propriétés textes de l’objet instancier avec les bonnes valeures :smiley:

(si quelqu’un à besoin d’un dessin, c’est mort, j’ai jeter la feuille de papier sur laquelle j’avais sgribouiller le fonctionnement du truc) :ane: …

l’avantage, c’est que ça marche pour autant de langue qu’on veut quelque soit les noms des tables, des champs à traduire, etc :jap: …
l’inconvénient … euh … je cherche encore :smiley:

oxy, juste un truc que je pige pas trop, j’ai besoin de resgen.exe pour generer mes ressources.
Mais si un utilisateur admin a une interface pour ajouter ou modifier des traduction, ça va vite devenir coton a gerer ça comme ça, nan ?

Bien comme dans tous types de projets, un admin peut faire ce qu’il veut. Maintenant, tu dois gérer tes groupes et tes accès de façon à ce que seule une équipe de dev puisse accéder à ces ressources. Style tu bloques l’accès aux intervenants extérieurs sur IIS.

Ensuite si d’autres personnes font des ressources, tu les intègres toi :smiley:
De toute façon un utilisateur ne devrait pas être admin :o
Plus sérieusement ce même utilisateur a aussi accès aux sources asp.net donc il peut travailler dessus vu qu’elles sont compilées à chaque nouvelle exécution.

(Sinon les cv sont toujours pas revenus du texas, mon amie est très occupée jusqu’à demain. )

je viens de faire les tests pour un user admin qui accede de toute maniere qu’a la partie web via son browser, c’est trop le bronx avec les .resx, faut que je simplie la technique.

J’ai pensé a recupéré une collection d’objet contenant les traductions dans une variable application pour la traduction de chaque langue pour optimiser la rapidité de génération des pages. Et donc en cas d’update ou de insert dans la DB, je met a jour la variable d’app et tout va se porter a merveille :slight_smile:

pffffffiou, fait chier de reflechir :smiley:

Je vois pas bien ce qui gène dans les ressources :ane:
Tu vas charger ta variable d’application.

cyber >

à mon avis attend asp2 parceque la localisation est devenue aussi simple que les applis windows form :smiley: :
http://www.labo-dotnet.com/articles/ASPNET…202/0/1429.aspx

sinon j’ai trouvé ça :
http://www.dotnet-tech.com/tutoriels/localisation/

ben ce qui gène c’est de faire X fois l’appel et l’aller-retour a la DB pour chaque user qui ont la meme langue. Ok il faut le faire pour chaque langue differente, mais c’est dommage de le repeter a chaque fois.
Du coup je vais voir si j’arrive a stocker lors du premier appel si la langue n’existe pas deja dans la variable application toutes les traductions.
Donc la prochaine fois qu’un user se connectera pour la meme langue, je fais plus d’accès aux données, je tappe juste dans la memoire d’IIS ce qui est quand meme turbo plus rapide :oui:

Je sais pas si ça a grand chose à voir, mais on avait développé des JSP avec un système de traduction:
On stocke tous les liens id-message de chaque langue dans des fichiers: à l’origine de bêtes fichiers texte avec un fichier pour chaque langue, puis on est passés à un fichier xml: l’avantage: voir le même message dans toutes les langues au même endroit pour faciliter la saisie. Donc on n’utilise pas de BD, mais en PHP ça peut être différent?

Puis dans la JSP, tout est dynamique, à chaque fois qu’on veut un message, ou qu’on affiche une valeur, on passe par un truc genre <%=translate(“toto.id”%>

Après, plut^to que de tout faire dynamique, on avait une astuce pour précompiler des pages différentes dans chaque langue en s’amusant avec les commentaires du style
<!–Trans–>mon message<!–endtrans–>
:slight_smile: