IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Internationalisation d'un site avec Masterpage [Fait]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut Internationalisation d'un site avec Masterpage
    Bonjour,
    Je dois créer un CMS internationalisé en ASP.NET, langage dans lequel je débute totalement.
    J'ai suivi la vidéo à ce sujet sur le site officiel, malheureusement elle n'a pour exemple qu'une seule page, or mon CMS devra évidemment en compter plusieurs.

    Dans la vidéo, la détection de la langue est faite automatiquement en ajoutant les attributs Culture et UICulture dans le <%@ Page, j'ai donc essayé de faire de même dans le <%@ Master, mais apparemment ce n'est pas valide, existe-t-il donc un moyen d'appliquer la détection de la langue depuis la Masterpage ou faut-il le faire individuellement sur chaque page ?

    De même, la vidéo ne présente que l'utilisation de fichiers ressources pour gérer les langues, mais est-il possible de le faire avec une table SQL, tout en restant "simple" à manipuler, comme ça l'est avec les fichiers ressources ?

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Le plus simple pour appliquer l'internationalisation à toutes les pages est de le faire dans le fichier web.config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <configuration>
       <system.web>
    ...
          <globalization 
             culture="auto"
             uiculture="auto"/>
    ...
       </system.web>
    </configuration>
    Pour le coup de la gestion des ressources dans une BDD, le sujet a été abordé dans le forum il n'y a pas très longtemps :
    http://www.developpez.net/forums/d66...ltilingue-bdd/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut
    Merci

    Par contre pour le "custom resource provider", il n'y a pas moyen de faire plus simple ?
    Le code de l'article contient un système de cache et apparemment pas mal d'autres fonctions sans doute intéressantes mais au final j'ai juste besoin d'un système d'association clés/valeurs, pas d'un système aussi complexe.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    aucune idée... j'avoue que je me suis pas penché en détails sur la solution proposée

  5. #5
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Bonjour,

    Oui , on peut tout à fait utiliser les traductions dans une base de donnée , tu dois juste spécifier dans ton web.config , la classe qui gerera tes ressources. d'ailleurs cette solution est bien plus dynamique et pratique que les fichiers standars de ressources .

    Pour checker la langue courante , tu as la methode TwoIsoletterLanguagename ( Quelque chose comme ca) de la classe System.tread....

    Comme le dit tomlev , tu as 2 propriétés à géré. celle du thread utilisé pour le UI et le thread du code Business ... .

    tout ceci peut être traiter dans ta classe qui gère les ressources .

    Si t'as encore des questions , n'hésites pas .

    Bon travail

  6. #6
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par Palca Voir le message
    Bonjour,
    Je dois créer un CMS internationalisé en ASP.NET, langage dans lequel je débute totalement.
    Je vais répondre par ta question par...une autre question...

    Si c'est pour ton travail, pourquoi réinventer la roue (a moins que ton travail ne soit la création d'un nouveau CMS )?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut
    Je ne cherche pas à réinventer la roue, c'est simplement qu'étant un CMS, je n'ai pas un contrôle total sur le contenu. Celui-ci devra pouvoir être créé/modifié depuis l'administration du CMS, donc l'utilisation de fichiers ressources ne me semble pas adaptée (à moins qu'il existe un moyen simple de les éditer depuis une page ASP.NET ?).
    Et oui je dois créer un CMS donc j'ignore dans quelle proportion je peux utiliser du code open source, mais vu que c'est un devoir de fac je suppose que plus j'apporte de mon propre code et mieux c'est...

    Oui , on peut tout à fait utiliser les traductions dans une base de donnée , tu dois juste spécifier dans ton web.config , la classe qui gerera tes ressources. d'ailleurs cette solution est bien plus dynamique et pratique que les fichiers standars de ressources .
    Cette classe a des contraintes particulières ou c'est juste dans son utilisation qu'il faut coder en fonction ?

  8. #8
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Voici Palca :

    Tout est expliqué ici :

    http://asp-net-whidbey.blogspot.com/...-provider.html



    Après , il te suffit d'appeler ta ressources de la meme maniere :

    <asp:Literal id=test runat=server text="<%$ resources : Key,valeur %>" />

    Bien à toi.

  9. #9
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Pour ce qui est de gérer plusieurs langue je dirait qu'il faut faire un mélange.

    On n'est pas obligé de tout mettre en base (la pauvre). Il faut tout d'abords identifier les données hyperdynamiques des autres.
    Si tu fais de la vente en ligne par exemple les données liées à un produit devront être très dynamiques. Par contre, ce n'est pas forcement nécessaire de demander 700 fois à la base de données quelle est la traduction de "Valider" en chinois. Ce dernier peut aisément se trouver dans un fichier de ressource.
    Même en ce qui concerne les données hyperdynamiques, il y en a qui n'ont pas forcement de raison d'être systematiquement demandées à la base. Par exemple la déscription d'un produit. Pourquoi ne pas les mettre en cache sur le serveur IIS? Ainsi, tu déportes une partie de la charge sur IIS et non plus sur la base.
    Donc quelles sont les données hyperdynamiques? Il y a les prix, les quantités.

    En ce qui concerne le cache, il vaut mieux oublier de charger de gros dico en mémoire, ça plombe les perf. De petit fichiers Xml c'est bien.
    Mais que sont les fichiers ressource si ce n'est du Xml? Rrraaahhh Bon, ton Xml maison pourra contenir toutes les données de base de ton produit. Il peut être généré à la volée.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #10
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    D'accord avec toi Immobilis .Néanmoins, l'avantage de la base de donnée est que cela sous entend par la même occasion une gestion personnalisés de ces ressources .

    Par exemple : je voudrai lui dire d'afficher un contenu traduit dans la langue courante du thread en cours mais dans le cas où la description n'existerai pas alors on décide de l'afficher dans une autre langue etc ...

    Je trouve aussi pratique d'avoir un fichier sql dans le root de ton projet qui contiendra le script de tes traductions qui les injectes en DB à chaque publication de ton application .

    Dés qu'on a de nouvelles traductions , on les rajoutes dans le script qu'on oubliera pas de lancer à chaque déploiement

    Pour la gestion en cache , je suis pas trop fan . On aurait une gestion des ressources à 2 endroits différents ? en base et en cache ?

    Niveau perf , c'est clairement mieux de les charger une fois mais bon..
    Tout dépend du projet .
    Bien à toi

  11. #11
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par issou Voir le message
    Par exemple : je voudrai lui dire d'afficher un contenu traduit dans la langue courante du thread en cours mais dans le cas où la description n'existerai pas alors on décide de l'afficher dans une autre langue etc ...
    Mmmh, c'est certain, ça fera de beaux mélanges. Si des données sont importantes, il faut faire en sorte de les renseigner. Sinon, si elles sont pas affichées c pas grave.
    Citation Envoyé par issou Voir le message
    Je trouve aussi pratique d'avoir un fichier sql dans le root de ton projet qui contiendra le script de tes traductions qui les injectes en DB à chaque publication de ton application.
    Dés qu'on a de nouvelles traductions , on les rajoutes dans le script qu'on oubliera pas de lancer à chaque déploiement
    Euh, ouais ok. Je sais pas comment tu compte gérer les trad, si il y aura un formulaire de saisie, mais j'espère que personne (utilisateur final) n'aura passé 3 heures à faire des trad aux petits oignons que tu écraseras comme une crêpe.
    Citation Envoyé par issou Voir le message
    Pour la gestion en cache , je suis pas trop fan . On aurait une gestion des ressources à 2 endroits différents ? en base et en cache ?
    Bah non, normalement le cache se gère tout seul et quand il se recharge il va chercher les données en base.
    Citation Envoyé par issou Voir le message
    Tout dépend du projet .
    Je sais pas quelle est la taille de ton CMS, quelle quantité de données, mais dans tous les cas c bien de prendre de bonnes habitudes.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Site multi-langue avec masterPage
    Par AghilasB dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/10/2009, 14h47
  2. Réponses: 2
    Dernier message: 16/10/2008, 12h43
  3. Réponses: 2
    Dernier message: 16/10/2008, 12h42
  4. Site avec paiement en ligne, quel langage utiliser ?
    Par Flushovsky dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 28/02/2005, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo