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 :

Problème gestion de langue Arabe


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut Problème gestion de langue Arabe
    Bonjour,

    Je veux créer un site bilingue Français-Arabe, jai des champs mixtes de ces 2 langues dans ma base de données sqlserver (La partie base de données jai pu afficher les champs avec les caracteres en arabe) mais dans les pages aspx et a la saisie des champs (textbox) l'enregistrement des champs and français passe mais celui des champs arabes se traduit en des signes d'interrogations.

    Si quelqu'un a une idée comment faire

    Merci.

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    Comment tu insère tes données (caractères arabes) dans la base de données ? procedure stockée ou requette simple ?!!

    d'abord il faut que tu spécifier comme type pour les champs (censé contenir les mots en arabe) nvarchar ou lieu de varchar ou char.
    si tu utilise procedure stockée (changt. de type) ci suffisant, sinon (si t'utilise requete simple), je pense qu'il faut
    que tu précide tes valeurs à insérer par un "N", par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into TableName Values (N'Mot en arabe', N'2eme mot en arabe')
    j'espère que j'ai raison ;-)

    bonne courage

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Merci Redouane pour la reponse.

    J'ai bien mis les types en NVARCHAR().

    J'ai appliqué la ligne de ton code mais ca marche toujours pas.

    Voici mon code d'insertion sur le site:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("Insert into Professeur (Nom, NomAr, Prenom, PrenomAr) ", "Values ('{0}', '{1}', '{2}', '{3}')"), Nom.Text, NomAr.Text, Prenom.Text, PrenomAr.Text)
    je veux faire en sorte que quand je veux saisir dans les champs arabs, que mon clavier change en arabe sauf passer pas Alt+Shift.

    Cordialement.

  4. #4
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    t'a essayé d'abord dans le Query Analyzer du sqlserver (TSQL) ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Insert into Professeur (Nom, NomAr, Prenom, PrenomAr)
    Values ('Nom', N'NomAr', 'Prenom', N'PrenomAr')
    si ça marche, il faut changer dans ton code vb.net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ("Insert into Professeur (Nom, NomAr, Prenom, PrenomAr) ", 
    "Values ('{0}', N'{1}', '{2}', N'{3}')"), Nom.Text, NomAr.Text, Prenom.Text, PrenomAr.Text)
    sinon, essaye de travailler avec une procedure stockée (insertion normale sans le N).

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup l'ajout passe maintenant.

    Mais il me reste le truc de rendre mes 2 textbox auto changeables en arabs dés je veux faire l'insertion.

    Cordialement.

  6. #6
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    j'ai peur que j'ai pas bien compris ta question désolé

    tu veux dire quoi par auto changeables et ci quoi ces textbox ?

  7. #7
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Mes 2 textbox (NomAr et PrenomAr).

    Je veux que quand je pose le curseur sur ces 2 zones qu'il change de droite a gauche at me donne la main a saisir en alphabets arabs.

    Cordialement.

  8. #8
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    :-)

    Tu peux ajouter un style dans ton fichier .css (pour diriger le curseur de droite à gauche):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .ArabTextStyle
    {
    	direction:rtl;
    }
    et dans ton textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:TextBox ID="text" runat="server" CssClass="ArabTextStyle"></asp:TextBox>
    sinon, tu peux même inclure tes textbox dans un div qui a l'attribut dir avec valeur rtl => right to left

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div dir="rtl">
            <asp:TextBox ID="text" runat="server"></asp:TextBox>
    </div>
    bonne courage

  9. #9
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup pour votre temps.

    J'ai pu changer le sens du curseur de droite a gauche mais a la saisie ca donne toujours les lettres en français, je dois passer par Alt+Shift pour changer en arabe, je peux pas changer ca pour que ca me donne automatiquement les lettres arabes.

    Cordialement

  10. #10
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    je suis désolé mais ça vraiment je ne sais pas, mais il y en a forcément une solution.
    je vais essayer de chercher, fais la meme chose de ta part et essaye de postuler un autre sujet avec un autre problème pour qu'il soit clair (changement de la langue du système automatiquement) ou qlq chose comme ça

  11. #11
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    En fait jai trouvé ca :

    Code : 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
    'declaration des contantes
        Public Const KLF_ACTIVATE  = &H1
        Public Const LANG_FR As UInt32= &H40C
        Public Const LANG_AR As UInt32 = &H1801
        Public Const LANG_EN As UInt32 = &H409
    
    'declaration d'une fonction qui modifié la langue a l'aide de "user32"
        Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As UInt32, ByVal flags As UInt32) As UInt32
    
    ' puis on fait l'appel a notre fonction ActivateKeyboardLayout dans une autre fonction pour facilite utilisation
    Public Sub Changelangue(ByVal Language As UInt32)
            ActivateKeyboardLayout(Language, KLF_ACTIVATE)
    End Sub
    
    'et enfin on fait l'appel a cet derniere fontion dans n'import evenement et choisi la langue qui tu veut comme ça (ex: l'evenement GotFocus):
    
    Private Sub textboxarabe_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles nomar.GotFocus
            ChangeKeyboardLanguage(LANG_AR)
    End Sub
    Mais les fonctions en rouge jai pas bien assimili??

    Cordialement.

  12. #12
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Le USER32 t'aide à gérer les autres applications, à simuler des événements de la souris et du clavier dans le code.

    http://msdn.microsoft.com/fr-fr/libr...48(VS.80).aspx

    j'avais déjà fais qlq chose avec mais dans une application winforms, tu peux par exemple lancer un url et faire
    des traitements comme Fichier --> Enregistrer sous .....

    j'ai jamais testé dans le web, je vais essayer de voir si ça marche avec le alt + shift ;-)

    essaye de ta part aussi de voir l'article et les exemples dedans, et essaye d'executer l'exemple que t'as ou un exemple semblable

  13. #13
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    J'ai appliqué le code sur ma page aspx come suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    script runat="server">
      Protected Sub NomAr_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Changelangue(LANG_AR)
      End Sub
    </script>
    et j'ai mis les fonctions dans la page aspx.vb.

    Rien ne s'est passé à l'ajout puisque l'evenement TextChanged opére dans les cas de modification pas dans un nouveau ajout.

    Je cherche un equivalent de GetFocus() de winforms en asp, ca va mieux marcher avec.

    Si quelqu'un a une idée SVP.

    NB: jai testé le code avec une applicaton WinForm et ca a marché a merveille avec l'evenement GetFocus().

  14. #14
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    Tu peux créer par exemple une classe qui hérite de System.Web.UI.WebControls.TextBox, et où
    tu peux mettre le traitement que tu veux (changement de langue du clavier).

    en fait, il y a une propriété dans le control TextBox qui donne le focus à ce dernier :

    on va substituer cette propriété, et ajouter le traitement de changement de la langue, pour ça:

    - tu créer un autre projet de classes (class library) que tu le renomme par exemple "WebControls"
    - tu vas ajouter une classe (CTextBox.vb) qui va hériter de TextBox, comme suite :

    Code : 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
    Imports Microsoft.VisualBasic
    Imports System.Web.UI.WebControls
    Imports System.Windows.Forms
     
    Public Class CTextBox
        Inherits System.Web.UI.WebControls.TextBox
     
        'declaration des contantes
        Public Const KLF_ACTIVATE = &H1
        Public Const LANG_FR As UInt32 = &H40C
        Public Const LANG_AR As UInt32 = &H1801
        Public Const LANG_EN As UInt32 = &H409
     
        'declaration d'une fonction qui modifié la langue a l'aide de "user32"
        Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hKL As Long, ByVal Flags As Long) As Long
     
        'Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
     
        ' puis on fait l'appel a notre fonction ActivateKeyboardLayout dans une autre fonction pour facilite utilisation
        Public Sub ChangeKeyboardLanguage(ByVal Language As UInt32)
            ActivateKeyboardLayout(Language, KLF_ACTIVATE)
        End Sub
     
        Public Overrides Sub Focus()
     
            If (InputLanguage.CurrentInputLanguage.LayoutName = "Anglais (États-Unis)" Or InputLanguage.CurrentInputLanguage.LayoutName = "English") Then
                MyBase.Focus()
            Else
                ChangeKeyboardLanguage(LANG_EN)
                SendKeys.SendWait("%+")
                Me.Focus()
            End If
     
        End Sub
     
    End Class
    - remarque que j'ai substitué la méthode Focus(), et j'ai travaillé avec la langue anglais au lieu de l'arabe (juste pour exemple, car je n'ai pas l'arabe dans mon clavier), donc il faut que tu sache c'est quoi le LayoutName de l'arabe pour tester avec.

    - dans ta page aspx (disant ici la page TestPage.aspx), tu vas mettre le nouveau textbox comme zone de text pour les champs en arabe :

    Code : 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
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="TestPage.aspx.vb" Inherits="TestPage" %>
     
    <%@ Register Assembly="WebControls" Namespace="WebControls" TagPrefix="cc1" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <cc1:CTextBox ID="CTextBox1" runat="server"></cc1:CTextBox>
     
        </div>
        </form>
    </body>
    </html>

    - bien sur, t'aura dans ce cas à ajouter la référence du projet WebControls dans ton projet qui contient la page aspx

    en fait, je n'ai jamais fais ça dans une application web, ça reste à tester et chercher une autre solution plus optimale s'il y en a.

    NB : SendKeys.SendWait("%+") est équivalent à l'envoi de la touche alt + shift sur l'application encours (pour changement de la langue du clavier), qui est dans notre cas la page aspx TestPage

    bonne courage

Discussions similaires

  1. import csv/MySql:probléme de la langue Arabe
    Par ayarino dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 11/04/2012, 20h52
  2. probléme utilisation langue arabe?
    Par dj_techno dans le forum Delphi
    Réponses: 2
    Dernier message: 28/12/2006, 17h51
  3. Problème de gestion des langues avec MFC
    Par Figaro dans le forum Visual C++
    Réponses: 4
    Dernier message: 20/11/2006, 16h56
  4. problème langue arabe
    Par infoseb dans le forum Oracle
    Réponses: 2
    Dernier message: 17/10/2005, 18h44

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