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 :

[Article] Internationalisation d'une application asp.net grâce à une base de données


Sujet :

ASP.NET

  1. #1
    Expert éminent
    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
    Points : 9 506
    Points
    9 506
    Par défaut [Article] Internationalisation d'une application asp.net grâce à une base de données
    Bonjour à tous,

    Voici mon premier article http://immobilis.developpez.com/arti...-base-donnees/

    Il s'agit de traiter de l'internationalisation d'un site ou d'une application web avec une base de donnée.

    J'espère qu'il vous plaira et qu'il vous rendra service.

    N'hésitez pas à ajouter vos commentaires dans cette discussion.

    Merki

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

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bon boulot

    Je vais prendre le temps de le lire en entier cette semaine.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Tuto vraiment sympa et pratique
    Des détails sur comment arriver à internationaliser une application, des commentaires sur les actions effectuées, pourquoi et dans quel but.

    Ca m'a permis d'avoir de bonnes bases sur l'internationalisation. Ne reste plus qu'à se l'approprier et à l'adapter (notamment sur la culture à partir d'une dropdownlist ^^).

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Hello,

    Je me permet de déterrer le post car je rencontre un souci à l'utilisation de ce tutorial avec AJAX. J'ai surchargé la méthode Render dans une classe de base dont mes pages héritent.

    J'ai une Grid sur ma page, dans laquelle j'ai par exemple un bouton pour ajouter un nouvel élément. Lors du click sur ce bouton, un Callback AJAX a lieu, et à chaque fois, j'obtiens ce genre de message d'erreur :
    Error: Sys.WebForms.PageRequestmanagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the reponse is modified by calls to Reponse. Write(), reponse filters, httpModules, orserver trace is enabled.
    Si je désactive la surcharge de la méthode Render, ça se remet à fonctionner correctement, sauf que du coup les clefs de traduction ne sont plus traduites

    Est-ce que vous verriez une solution à ce genre de problème, afin de pouvoir continuer à bénéficier de la traduction lors d'un Callback AJAX ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Expert éminent
    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
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Est-ce lié à la surcharge ou bien à la traduction? Peux-tu nous montrer un bout de code s'il te plaît?

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

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    A priori, je dirais que c'est lié à la surcharge, puisque quand je l'enlève ça se remet à fonctionner normalement. Voici mon code.

    BasePage.cs :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    protected override void Render(HtmlTextWriter writer)
    {
        using (var tm = new TranslationsManager())
        {
            using (var sw = new StringWriter())
            {
                using (var hw = new HtmlTextWriter(sw))
                {
                    base.Render(hw);    // Si je remplace (hw) par (writer) et que je commente toutes les autres lignes de la méthode, ça fonctionne mais je perds les traductions...
                }
     
                writer.Write(tm.Translate(sw.ToString()));
            }
        }
    }
    Ensuite côté ASPX j'utilise les composants Telerik ASP.NET AJAX. Les appels sont réalisés en AJAX.NET et voici un lien où le support explicite que ce n'est pas supporté par AJAX.NET (2ème post). Je pense que ça doit être reproductible en utilisant une Grid dans un UpdatePanel. Voici mon code :
    Code ASPX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
     
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="rgCalls">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rgCalls" LoadingPanelID="ralpCalls" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
     
    <telerik:RadAjaxLoadingPanel ID="ralpCalls" runat="server" HorizontalAlign="Center" />
     
    <telerik:RadGrid ID="rgCalls" runat="server" 
        AutoGenerateColumns="false" 
        PageSize="5" 
        AllowPaging="true" 
        AllowSorting="true"
        OnNeedDataSource="rgCalls_NeedDataSource" 
        OnItemDataBound="rgCalls_ItemDataBound" 
        OnInsertCommand="rgCalls_InsertCommand" 
        OnItemCommand="rgCalls_ItemCommand">
        <MasterTableView 
            CommandItemDisplay="Top" 
            ClientDataKeyNames="Id" 
            DataKeyNames="Id" 
            EditMode="InPlace">
            <NoRecordsTemplate>##000013-No record to display.##</NoRecordsTemplate>
            <CommandItemSettings 
                ShowRefreshButton="true" 
                ShowAddNewRecordButton="true" 
                AddNewRecordText="##000004-Add a Call##" 
                RefreshText="##000005-Refresh##" />
            <Columns>
                <telerik:GridEditCommandColumn ButtonType="ImageButton" 
                    CancelText="##000007-Cancel##" 
                    EditText="##000006-Edit##" 
                    UpdateText="##000008-Save Updates##" />
                <%-- Link to view Call details. content is loaded into code behind rgCalls_ItemDataBound method --%>
                <telerik:GridTemplateColumn HeaderText="">
                    <ItemTemplate>
                        <asp:HyperLink ID="ViewLink" runat="server" Text="" />
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <%-- Call Date --%>
                <telerik:GridDateTimeColumn 
                    UniqueName="CallTimestamp" 
                    HeaderText="##000009-Date##" 
                    DataField="Timestamp" 
                    DataType="System.DateTime" 
                    PickerType="DateTimePicker" />
                <%-- Call Notes --%>
                <telerik:GridBoundColumn 
                    HeaderText="##000010-Notes##" 
                    DataField="Notes" 
                    DataType="System.String" />
                <%-- Label to display the user name. Receive the user ID from database,
                    so the user name is loaded in code behind rgCalls_ItemDataBound method --%>
                <telerik:GridTemplateColumn HeaderText="##000011-By##">
                    <ItemTemplate>
                        <asp:Label ID="lblUserName" runat="server" />
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <%-- Label to display the call direction. Receive a bit from database,
                    so the matching icon is loaded in code behind rgCalls_ItemDataBound method --%>
                <telerik:GridTemplateColumn HeaderText="##000012-Direction##" ItemStyle-Width="20">
                    <ItemTemplate>
                        <asp:Label ID="lblCallDirection" runat="server" />
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
    </telerik:RadGrid>
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Expert éminent
    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
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Je vois pas trop. J'ai ajouté une GridView dans un UpdatePanel et une surcharge de ma page. J'ai pas eu de plantage.

    Pourrais-tu essayer avec une GridView .NET au lieu de celle de Telerik?

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

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Merci de t'être penché sur le cas Immobilis

    J'ai fini par contourner le problème en créant ma Grid et les divers Templates directement en C#, dans l'évènement Init de la page. J'utilise ensuite le traducteur au gré des besoins.

    C'est dommage car l'utilisation de la méthode Render était bien pratique, mais bon

    Merci en tout cas pour le tuto !
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Points : 47
    Points
    47
    Par défaut
    Article très intéressant.

    Une petite question subsidiaire : as-tu fait un comparatif de performances par rapport à l'utilisation de ressources ?

  10. #10
    Expert éminent
    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
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par SLiM_ViNCe Voir le message
    Article très intéressant.

    Une petite question subsidiaire : as-tu fait un comparatif de performances par rapport à l'utilisation de ressources ?
    Non, je n'ai pas fait de comparatif car le besoin est différent. Les fichiers de ressources sont gérés par des développeurs (nécessité de compiler) alors que dans le cadre du tutoriel c'est le métier qui gère via une IHM.

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

Discussions similaires

  1. Integrer une application Asp.Net dans une Webpart
    Par AntonioMath dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/04/2009, 02h06

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