Problèmes de globalisation dans ASP et ASP.NET

Traductions disponibles Traductions disponibles
Numéro d'article: 893663 - Voir les produits auxquels s'applique cet article
Colonne vocale d'assistance ASP.NET
Pour personnaliser cette colonne à vos besoins, nous vous invitons à envoyer vos idées sur les sujets qui vous intéressent et problèmes que vous souhaitez voir traités dans de futurs articles de la Base de connaissances et des colonnes Support Voice. Vous pouvez soumettre vos idées et des commentaires à l'aide de la Demandez-le . Il existe également un lien vers le formulaire au bas de cette colonne.
Agrandir tout | Réduire tout

Sommaire

Introduction

Bienvenue ! Il s'agit de Sukesh Khare avec le Microsoft ASP.NET Équipe de Support de développement. Il s'agit de la première fois que j'ai créé une assistance vocale colonne. J'ai hâte de la création de plusieurs de ces colonnes dans les mois longueur d'avance.

Pour mois-ci ce, je vais discuter de globalisation problèmes dans Active Server Pages (ASP) et ASP.NET, les problèmes auxquels nous sommes confrontés dans ASP, comment choses ont changé dans ASP.NET 1 x, et c'est quoi ASP.NET 2.0 sur avant de la globalisation.

Remarque : Si vous rencontrez un terme que vous ne comprenez pas, consultez le glossaire section du bas de cette colonne.

Problèmes de globalisation dans ASP

Avant ASP.NET, il n'a aucune prise en charge structurée pour le développement d'applications pour les utilisateurs globaux. Pendant le développement précoce de ASP, les développeurs comme moi trouvé uniquement dispersés prise en charge de globalisation dans les systèmes d'exploitation, navigateurs, ASP et systèmes back-end. Toutefois, nous avons rarement observé les connexions automatiques entre ces applications. Heureusement, nous la compréhension des concepts tels que les jeux de caractères, les pages de code, les langues du navigateur, et les polices qui nous aurions pu exploiter pour le développement d'applications pour utilisateurs globaux.

Il serait trop difficile à séparer en catégories tous de la globalisation des problèmes que ceux d'entre nous dans ASP.NET ont vu. À la place, Allez de liste une série de concepts qui se rapportent à une variété de ces problèmes.

Pages de code et les jeux de caractères

Nous savons tous que les caractères sur notre écran d'ordinateur sont simplement un série d'octets. La série d'octets peut être créée et interprétée dans n'importe quel nombre des moyens. Si l'interprétation utilise un codage différent de celui du codage que le tableau d'octets a été créé avec l'interprétation s'affiche. comme des parasites. Jeux de caractères (charsets) sont les formats qui ne sont généralement d'encodage utilisé par les navigateurs. La propriété Codepage , qui n'est plus applicable pour les conversions de côté serveur, est simplement une table de conversion qui spécifie la façon dont les caractères sont codé.

Navigateurs codent les données de publication de formulaire après le dernier jeu de caractères. Si le jeu de caractères en cours est « windows-1256 », puis l'octet transmission au serveur est également codée comme « windows-1256. »

Lors de la ASP est interprétée, les collections de formulaire et Querystring ne reposent pas jusqu'à ce qu'ils sont référencés dans le code. Lorsque ils sont en cours de création, la chaîne de données est transformé au format Unicode en fonction de la page de codes actuelle. (Par défaut, ASP et ASP.NET traitent du contenu par à l'aide de format Unicode). Il est très important de définir la page de codes correct avant de référencer les collections ; dans le cas contraire, la représentation Unicode dans mémoire n'est pas correct.

Pour définir une page de codes, utilisez Session.Codepage ou Response.Codepage. Le Response.Codepage est disponible uniquement dans Microsoft Internet Information Services (IIS) 5.1 ou versions ultérieures. Pour plus d'informations sur les valeurs entières (qui correspondent au jeu de caractères) que nous devez définir ces propriétés à visiter le site Web Microsoft suivant :
Reconnaissance du jeu de caractères
http://msdn2.Microsoft.com/en-us/library/Aa752010.aspx
Par exemple, pour définir la page de codes pour la langue arabe, utilisez le code suivant :
Session.Codepage = 1256
Response.Codepage n'affecte que la réponse actuelle. Toutefois, Session.Codepage affecte toutes les réponses apportées par l'utilisateur en cours. Lors de la page de codes est définie en utilisant une de ces propriétés et les collections de formulaire et Querystring sont intégrés, cette modification dans les causes de page de codes actuelle la méthode Response.Write pour transformer l'Unicode dans la mémoire en cours page de codes. Pour plus d'informations sur ce sujet, visitez le site Web MSDN suivant site :
Définition de la Page de Code pour les Conversions de chaînes (ASP)http://msdn2.Microsoft.com/en-us/library/ms525789.aspx
Financiers lorsqu'il s'agit de problèmes liés à des jeux de caractères et pages de codes est ce jeu de caractères client et serveur codepage doit correspondre à.

Accepter les langues

Si un développeur ASP souhaite savoir quelles langues un utilisateur a configuré dans son navigateur, le développeur peut utiliser la variable Request.ServerVariables (« HTTP_ACCEPT_LANGUAGE ») pour trouver la liste des langues que l'utilisateur Pour lire la réponse (par exemple, anglais, allemand ou indien) et l'ordre des préférence de l'utilisateur souhaite voir ces langues. Dans ASP.NET, des informations similaires sont présentes dans la propriété Request.UserLanguages sous forme de tableau. Pour plus d'informations sur l'utilisation de ces informations dans le code ASP, cliquez sur le numéro d'article suivant pour afficher l'article correspondant dans la Base de connaissances Microsoft :
229690Comment faire pour définir l'ID de paramètres régionaux ASP par les paramètres de langue du navigateur

Affichage de caractères multioctets définit dans Internet Explorer

Le seul format de codage qui permet d'afficher un jeu de caractères codés sur plusieurs octets est au format Unicode (UTF-8). Avec UTF-8, nous pouvons afficher cyrillique, indien et japonais sur la même page. Si nous n'utilisons pas UTF-8, nous pouvons afficher uniquement un de ces langues à la fois. Pour définir le jeu de caractères du navigateur, utilisez la propriété Response.CharSet .

Caractères multi-octets statiques sur une page

Pour afficher les caractères codés sur plusieurs octets stockés directement dans la page, nous Enregistrez d'abord la page avec un codage spécifique. UTF-8 vous convient le mieux, mais un fonctionne en tant que page de codes spécifique (associée à la page de codes des caractères) barre d'outils.

Ne permet pas l'enregistrement d'un fichier ASP à l'aide de Microsoft Visual InterDev ici, dans la mesure où Visual InterDev ne peut enregistrer anglais ANSI ou Unicode. Les ASP page enregistrée comme Unicode n'est pas pris en charge par ASP.

Dans Microsoft Visual Studio .NET, vous pouvez enregistrer un fichier dans n'importe quel codage. Il existe deux façons de faire Cela. La valeur par défaut est moyen pour enregistrer le fichier à l'aide de la page de codes actuelle pour le utilisateur. Un moyen supplémentaire pour enregistrer un fichier avec un codage est la suivante :
Sur le Fichier menu, cliquez sur Enregistrer le fichier sous. Dans le Enregistrer le fichier sous boîte de dialogue, cliquez sur la flèche déroulante sur le Enregistrer . Lorsque vous cliquez sur la flèche, les options sont Enregistrer et Enregistrer avec codage. Lorsque vous cliquez sur Enregistrer avec codage, le Options d'enregistrement avancéesboîte de dialogue s'affiche dans laquelle vous pouvez sélectionner le type de codage que vous souhaitez applicable à partir d'une liste de pages de codes qui sont installés sur l'ordinateur.

Remarque : Cela modifie le codage pour l'enregistrement opération, mais n'est pour une heure uniquement. Le prochain enregistrement sera ramené à la valeur par défaut.

Pour modifier la page de codes par défaut, cliquez sur Options d'enregistrement avancées sur la Fichier menu. Dans le Options d'enregistrement avancéesboîte de dialogue, vous pouvez définir le codage par défaut pour enregistrer les opérations à la page de codes de votre choix.

Ces méthodes sont liées à la façon dont le fichier est enregistré sur le disque. Toutefois, pour contrôler la sortie pour ASP, comme indiqué précédemment, nous devez définir la Session.CodePage et les propriétés de la propriété Response.CharSet . Avec IIS 5.1 et versions ultérieures, nous pouvons également utiliser la propriété Response.CodePage .

Page de codes de défaut sur le serveur

Les paramètres régionaux par défaut et la page de codes par défaut pour la page dépendent de les paramètres du Registre pour le.Utilisateur par défaut. Nous pouvons trouver la clé internationale à la ruche du Registre
HKEY_USERS\.DEFAULT\Control Panel\International
. Nous pouvons également modifier le comportement de la paramètres régionaux choisis par IIS. Pour plus d'informations, consultez la section « IIS 5.0 » dans l'article suivant de la Base de connaissances :
306044 Comportement du format de Date/heure est différent lors de l'accès à partir d'Active Server Pages
Si l'utilisateur connecté a les mêmes paramètres régionaux défini comme le au-dessus de clé ou la valeur par défaut du système, prend le paramètre utilisateur priorité.

Exemple : Paramètres régionaux par défaut a date format défini en tant que 11.1.2004, alors que l'utilisateur connecté (avec le même jeu de paramètres régionaux) a le format de date en tant que 1/11/2004. Le paramètre de 1/11/2004 prendra effet pour ASP.

(Pour les ASP.NET, cela peut varier. Dans certaines installations, l'utilisateur ASPNET a sa propre profil qui s'affichera sous HKEY_USERS lorsqu'il est chargé. Dans d'autres, il Utilisez la.Profil par défaut. Nous pouvons également utiliser l'attribut de page de codes dans la < % @ %> déclaration. Cela doit être utilisée lorsque le fichier est enregistré avec un codage différent puis la valeur par défaut comme page de codes 932 (japonais)).

Problèmes de page de codes par rapport à des problèmes de conversion de police : qui est qui ?

Dans certains cas, vous pouvez voir un caractère point d'interrogation (?) ou une zone où un caractère s'affiche normalement.
Problèmes de conversion de page de codes
Lorsqu'un caractère est remplacé par un caractère point d'interrogation (?), Il s'agit d'une indication qu'un problème de conversion de page de codes, s'est produite. Le point d'interrogation (?) est un caractère par défaut pour la conversion de page de codes et signifie que le système d'exploitation ne sait pas comment gérer la valeur de caractère et le convertir. Il remplace la valeur de caractère avec un point d'interrogation interrogation (?). Cela peut signifier que le caractère a une valeur non valide pour le page de codes ou que la page de codes qui est nécessaire pour la conversion n'est pas installé.
Problèmes de conversion de police
Lorsqu'un caractère est remplacé par une zone, il s'agit d'une indication qui un problème de conversion de police s'est produite. Cela se produit sur le côté client lors de la client n'a pas la bonne police pour afficher ce caractère correctement. Par exemple, lorsqu'un caractère est dans le jeu de caractères japonais et le client n'a pas de polices japonaises installés, est le caractère japonais affiché comme une boîte.

Ensuite, je parlerai comment les choses changé dans ASP.NET 1.x et comment ces modifications affectent les problèmes de globalisation dans le contexte de ASP.NET.

Problèmes de globalisation dans ASP.NET 1.x :

Avec ASP.NET, trois grands avantages ont été introduits :
  • La <globalization>balise dans le fichier web.config</globalization>
    La balise <globalization>nous mène loin de la concepts incohérents de pages de codes et jeux de caractères et vous permet de nous contrôler la majeure partie de la variantes dans ASP.NET.</globalization>
  • L'espace de noms System.Globalization
    L'espace de noms de globalisation nous fournit la programmation puissance de gestion de la globalisation.
  • Le concept de fichiers de ressources a été considérablement amélioré.
    Nous ne traitent pas les fichiers de ressources dans la façon dont nous avons utilisé pour dans ASP. Désormais, les fichiers de ressources sont sous la forme de fichiers XML lors de la conception et les développer, et qu'elles existent comme assemble lors de l'exécution.
La balise de configuration de la globalisation :

Deux paramètres importants dans la balise sont les suivantes :
<globalization 
            requestEncoding="utf-8" 
            responseEncoding="utf-8"  />
Autres zones de paramètres possibles suit :
Réduire ce tableauAgrandir ce tableau
fileEncodingSpécifie le codage par défaut pour .aspx, .asmx, et l'analyse des fichiers .asax. Unicode et les fichiers UTF-8 enregistrés avec la marque d'ordre d'octet préfixe (avec signature) seront automatiquement reconnus, quelle que soit la valeur de fileEncoding.
CultureSpécifie la culture par défaut pour le traitement Web entrantes demandes (applicables sur les méthodes des classes à partir de la System.Globalization espace de noms).
uiCultureSpécifie la culture par défaut pour le traitement recherches de ressources dépendant des paramètres régionaux (assemblys satellites).
Pour plus d'informations sur les chaînes de culture (valeurs de culture et uiculture), visitez le site Web de Microsoft à l'adresse suivante :
System.Globalization.CultureInfoClass
http://msdn2.Microsoft.com/en-us/library/System.Globalization.CultureInfo (vs.71) .aspx
Ces paramètres sont appliqués par ASP.NET après que la réponse est complète et avant la demande sont transmis à votre application. Pour responseEncoding, la mémoire tampon qui est créée pour stocker la sortie est définie pour ce le codage. Tous les éléments qui sont placées dans cette mémoire tampon seront codé en fonction de le paramètre telle qu'elle est inséré dans la mémoire tampon.

Pour requestEncoding, le runtime lit la demande et l'interpréter en fonction des paramètres Cette section. Il s'agit d'un paramètre qui peut provoquer des problèmes, cependant. La table ci-dessous montre la disposition de bit d'une séquence d'octets UTF-8 valide.

Si la valeur de caractère se situe en ASCII 7 bits standard, la valeur d'octet n'est pas modifiée. Si la valeur est supérieure à 127, il doit être Suivez les règles ci-dessous. Le premier jeu de bits indique le nombre de caractères dans la séquence. Chaque octet après que le premier doit commencer par le premier bit la valeur 1.

Disposition de l'octet UTF-8 :
Réduire ce tableauAgrandir ce tableau
Octets bitsreprésentation sous forme de
1 7 0vvvvvvv
211110vvvvv 10vvvvvv
3161110vvvv 10vvvvvv 10vvvvvv
4 2111110vvv 10vvvvvv 10vvvvvv 10vvvvvv
C'est là qu'intervient le problème. Si le navigateur encode le la demande en fonction d'un seul octet de codage (par exemple iso-8859-1), les valeurs au-delà de 127 ne sera plus valide en fonction de la disposition ci-dessus. Lorsqu'ils sont lus dans la mémoire tampon UTF-8, les caractères non valides sont simplement supprimés de la sortie.

Changements de codage de runtime

Dans l'événement Application_BeginRequest , nous pouvons modifier la valeur de requestEncoding et qu'il prendre effet avant le traitement de la demande. Pour la réponse, l'événement Page_PreRender est la dernière occasion de modifier le codage de la sortie. Également Remarque que Response.Write placera caractères dans cette mémoire tampon dès que nous l'appelons, être assurer d'avoir le droit de codage de jeu avant d'utiliser Response.Write.

Données d'origine sont non Unicode : comment toujours rendre Internet Explorer à interpréter les jeux de caractères codés sur plusieurs octets ?

Nous pouvons également vous ASP.NET se comportent comme ASP s'il nous faut. Pour rendre Cela se produit, nous devons définir la responseEncoding et requestEncoding pour windows-1252 (un plus complète encodage qu'iso-8859-1) et utilisez la propriété Response.Charset pour afficher le texte correctement. Cela fonctionne parce que Windows-1252 est un schéma de codage octet unique et ne modifie pas les octets qui sont ajoutés à la mémoire tampon. Par conséquent, des caractères codés sur deux octets sont envoyés sous la forme d'une série d'octets unique. Nous pouvons ensuite indiquer à Internet Explorer comment interpréter les octets à l'aide de la propriété Response.Charset . Ce scénario peut être nécessaire si les données d'origine ne pas stockées en tant qu'Unicode ou UTF-8, par exemple, une valeur de retour d'un objet COM, ou si les données sont stockées dans Microsoft SQL Server dans un champ non N (par exemple, varchar).

Problèmes de globalisation de SQL Server et ASP.NET

Entrées de données Unicode dans SQL Server
La meilleure façon de stocker des données dans SQL Server consiste à utiliser Unicode. Chaque fois que nous utilisons INSERT, UPDATE, etc., s'il existe encore une chance de moins d'Unicode données, nous devons ajouter un N avant la valeur. Cette option indique à la base de données que la valeur est Unicode. Un bon exemple est les objets ADO. Qu'ils le fassent automatiquement Si nous utilisons l'objet Recordset pour ajouter de nouveaux enregistrements.

Voici un exemple :
INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)
Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"
Date/heure d'entrée à SQL Server
Généralement, nous avons connaissance de la culture et les paramètres régionaux de la date heure est interprétée dans une application ASP.NET. Toutefois, lors de la poussées et les données de date/heure et à partir de sources externes, nous exécutons le risque d'une mauvaise interprétation des formats de date/heure. C'est parce que nous ne peut pas toujours garantir la culture et les paramètres régionaux de la source externe pour être le même que dans notre application. Dans SQL Server, cela peut être résolu à l'aide de la ' langue' attribut dans le connectionstring de la connexion établie à la base de données SQL. Nous pouvons fournir le même paramètre de langue dans le connectionstring comme c'est la culture dans notre application. Cela protège nous à partir de la risque de méprise, car SQL Server est toujours accepte et envoie la date/heure données en accord avec les paramètres mentionnés ci-dessus.

Espace de noms System.Globalization

Cet espace de noms est au c?ur de la globalisation et localisation dans le.NET Framework. La classe principale utilisée dans cet espace de noms est la classe CultureInfo . Il contient des informations spécifiques à la culture, telles que la format de date/heure, les formats de nombre, informations de comparaison et des informations de texte. Pour plus d'informations sur la classe CultureInfo , visitez le site Web MSDN suivant :
.aspxCultureInfo http://msdn2.Microsoft.com/en-us/library/System.Globalization.CultureInfo (vs.71)

Cultures neutres et les cultures spécifiques

Une culture neutre est une culture qui est associée à une langue, mais pas un pays spécifique ou une région. Une culture spécifique est associée à la fois avec une langue et un pays spécifique.

Un exemple: « DE » (neutre culture) est en allemand, mais "de-AT » (culture spécifique) pour le Langue allemande telle qu'elle est parlée en Autriche. Cultures neutres ne peut pas être utilisés pour la mise en forme.

Sensibilisation de thread et de la culture actuelle de classes.NET Framework

Toutes les classes et méthodes dans la bibliothèque.NET Framework où nous Attendez la sortie d'être dépendant de la culture ont deux comportements intégrés :
  • Ils nous permettent de spécifier le code de culture tout en fournissant la arguments pour que la sortie est basée sur la culture spécifiée. Il s'agit facultatif.
  • Si ce n'est pas respectée (il est généralement), les classes sont assez intelligents pour garder un contrôle sur la propriété Thread.CurrentThread.CurrentCulture et le travail en fonction de qui.
Nous pouvons modifier la valeur de cette propriété avec le code qui est semblable à les éléments suivants :
    Dim ci As CultureInfo
        ci = New CultureInfo("de-AT")
        Thread.CurrentThread.CurrentCulture = ci
Dans cet exemple de code « de » représente la langue allemande et « AT » représente l'Autriche. Ainsi, dans ce cas, il s'agit de la DateTime.Now().ToString méthode retourne la date et l'heure dans un format correspondant la façon dont la date et l'heure sont exprimées dans la langue allemande dans L'Autriche.

Le framework garantit (comme suit) que la propriété CurrentCulture est toujours initialisée :
  1. Quelle que soit il a la valeur par programme.
  2. Dans le cas où il n'est pas définie explicitement par le programmeur, le propriété est prélevée dans les fichiers de configuration (<globalization> balise).</globalization>
  3. Si la propriété est manquante, il est la culture sur le serveur Web est en cours d'exécution. Il s'agit généralement de l'indépendant de la culture qui correspond à la langue du système d'exploitation.

Fichiers de ressources

Tous les .resx, fichiers .resource et les fichiers qui ont l'attribut Action de générationressource incorporée qui sont ajoutés à un projet ASP.NET dans Visual Studio .NET, sont automatiquement compilé et incorporées dans l'assembly d'application dans le cadre de son manifeste. Même procéder manuellement à l'aide de l'outil Resource File Generator Utilitaire (RESGEN) via une invite de commandes Visual Studio .NET. Pour plus d'informations visitez le site Web MSDN suivant :
http://msdn2.Microsoft.com/en-us/library/ccec7sz1 (vs.71) .aspx
Il s'agit d'un concept général qui est applicable à chaque fois que nous devons gérer les ressources d'application qui ne sont pas liés à la globalisation. Toutefois, lorsque Nous mettons en ?uvre la globalisation, nous devons utiliser des assemblys satellites.

Assemblys satellites

Assemblys satellites peuvent être utilisés dans un ASP.NET du projet lorsque vous Assurez-vous que les conditions suivantes sont remplies :
  1. Tous les éléments d'interface utilisateur dans tous les fichiers aspx devez être équipé d'id et runat = server attributs.
  2. Nous créons des fichiers .resx séparé. Chacun d'eux doit correspondre à chaque culture, nous voulons que notre application pour prendre en charge.
  3. Nous devons choisir un nom commun pour tous ces fichiers pour exemple: « Chaînes ».
  4. Nous nommer les fichiers .resx séparé avec l'attribution de noms suivant convention commonfirstname. code région CodeLangue.resx (par exemple : Strings.de-AT.resx Strings.en-GB.resx).
  5. Nous devrions obtenir le fichier de ressourcescommonfirstname.resx (Strings.resx) qui possède toutes les chaînes, puisque nous voulons affichées dans le cas par défaut.
  6. Écrire du code pour détecter la culture de l'utilisateur et définir la propriété Thread.CurrentThread.CurrentUICulture pour correspondre à lui.
  7. Écrire du code pour charger les ressources à l'aide de la classe ResourceManager .
  8. Écrire du code pour extraire les chaînes à partir de l'objet chargé, et affecter aux éléments d'interface utilisateur.
Lorsque vous avez exécuté ces étapes, Visual Studio.NET va compiler Strings.resx et incorporer dans l'assembly d'application (MyGlobalizationTestProjectName.dll). Toutefois, pour tous les autres fichiers .resx, il génère des fichiers dll distincte qui n'ont pas de code exécutable mais uniquement données de ressources. Elles sont effectivement appelées assemblys satellites. En outre, Visual Studio .NET place ces éléments dans la structure de dossiers est semblable au suivant :
MyGlobalizationTestProjectName
        |------- bin
                |------en-US
                        MyGlobalizationTestProjectName.resources.dll
                |------ja-JP
                        MyGlobalizationTestProjectName.resources.dll
                |------de-AT
                        MyGlobalizationTestProjectName.resources.dll

Différence entre CurrentCulture et CurrentUICulture

Alors que les méthodes des classes dans l'espace de noms System.Globalization dépendent de la propriété Thread.CurrentThread.CurrentCulture pour donner à leur sortie, la classe ResourceManager qui charge l'assembly de ressource dépend de la propriété Thread.CurrentThread.CurrentUICulture pour charger l'assembly satellite approprié. Le Voici un exemple de code C# :
using System.Globalization;
using System.Threading;
using System.Resources;

//Load resources. 
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);	

// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.   
Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);

private void Page_Load(object sender, System.EventArgs e) 

{ 

 if (!IsPostBack)  
 
 {      
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
   }

 }

Ordre dans lequel ASP.NET sélectionne les assemblys satellites :

Lorsque vous avez défini du thread CurrentUICulture, ASP.NET sélectionne automatiquement les ressources qui correspondent, dans le ordre suivant :
  • Si un assembly satellite est trouvé avec une culture correspondante, les ressources de cet assembly sont utilisées.
  • Si un assembly satellite est trouvé avec une culture neutre qui correspond à la CurrentUICulture, ressources de cet assembly sont utilisées.
  • Si une correspondance est introuvable pour CurrentUICulture, les ressources de secours stockées dans l'assembly exécutable sont utilisé.
Remarque : Ceci est basé sur le processus de secours de ressource plus général. Pour plus d'informations, visitez le site Web MSDN suivant :
http://msdn2.Microsoft.com/en-us/library/sb6a8618 (vs.71) .aspx

Création manuelle d'assemblys satellites :

Cette utilisation des assemblys satellites est l'endroit où Visual Studio .NET crée les assemblys lui-même. Visual Studio .NET ne satellite de nom fort les assemblys par défaut, cependant. Si vous souhaitez modifier ces options, vous le feriez pour Vous devrez créer manuellement des assemblys satellites. Pour plus d'informations, visitez le site Web MSDN suivant :
http://msdn2.Microsoft.com/en-us/library/21a15yht (vs.71) .aspx
.

C'est quoi ASP.NET 2.0 à l'avant de la globalisation ?

L'utilisation généralisée de ASP.NET et les types de problèmes que nous Voyez par rapport à la globalisation fonctionnalités dans ASP.NET 2.0 sont toujours certains distance en avance. Toutefois, il serait judicieux d'effectuer ce qu'un bref aperçu direction de que la méthodologie de globalisation est dirigée pour le web applications.

Prise en charge de la globalisation dans ASP.NET 2.0 a subi un changement radical et les développeurs Web ont eu la possibilité d'effectuer le pour la localisation d'applications Web aussi simples qu'il est basé sur Windows applications. Voici une liste des fonctionnalités qui constituent la base de méthodologie de globalisation dans ASP.NET 2.0 :

Ressources fortement typées Au c?ur du.NET Framework 2.0 version est prise en charge les ressources fortement typées qui permettent aux développeurs avec Intellisense et simplifie le code requis pour accéder aux ressources au moment de l'exécution.

Éditeur de ressources de gestion Visual Studio .NET 2.0 inclut un nouvel éditeur de ressources grâce à une prise en charge pour la création et gestion des entrées de ressources y compris les chaînes, images, fichiers externes et autres types complexes.

Génération de ressources pour Web Forms Les développeurs Windows Forms ont bénéficié d'avantages de internationalisation automatique. Visual Studio .NET 2005 prendra en charge rapide internationalisation en générant automatiquement des ressources pour les formulaires Web, utilisateur les contrôles et pages maîtres.

Meilleure prise en charge runtime Les instances de ResourceManager sont gérées par le runtime et facilement accessible au code serveur via une programmation plus accessible interfaces.

Expressions de localisation Des expressions déclaratives modernes pour les pages Web prend en charge le mappage entrées de ressources aux propriétés de contrôle, les propriétés HTML ou du contenu statique régions. Ces expressions sont également extensibles, fournissant des méthodes supplémentaires pour contrôler le processus de joindre du contenu localisé à la sortie HTML.

Sélection automatique de culture Gestion de la culture sélectionnée pour chaque requête Web peut être automatiquement liés aux préférences du navigateur.

Modèle de fournisseur de ressources Un nouveau modèle de fournisseur de ressources permet aux développeurs de ressources de l'hôte dans d'autres sources de données telles que les fichiers plats et les tables de base de données, tandis que le modèle de programmation pour accéder à ces ressources reste cohérent.

Pour plus d'informations sur la méthodologie de globalisation dans ASP.NET 2.0, reportez-vous au site Web MSDN suivant :
Fonctionnalités de localisation 2.0 ASP.NET : Une nouvelle approche de localisation d'Applications Web
http://msdn2.Microsoft.com/en-us/library/ms379546 (VS.80) .aspx

Conclusion

C'est tout pour l'instant sur les problèmes de globalisation dans ASP et ASP.NET. J'espère que cet article vous aidera à quelques clients dépanner leur globalisation problèmes dans ASP et ASP.NET avant qu'ils optent pour contacter le Support Microsoft. Je vais terminer avec l'idée suivante :

"Où et quand vous êtes développement, pensez aux millions de gens autour de vous donner la World. Rendre vos solutions universelles ! Apporter des outils et technologies Microsoft internationalisation plus facile. »

Intercepte les à nouveau le mois prochain avec un autre sujet intéressant.

Nous vous remercions de votre temps.
Pour plus d'informations sur les problèmes de globalisation dans ASP et ASP.NET, consultez les sites Web de Microsoft aux adresses suivantes :
SetLocale et GetLocale dans vbscript
http://msdn2.Microsoft.com/en-us/library/5xf99h19.aspx
Globalisation étape par étape
http://msdn.Microsoft.com/en-us/goglobal/bb688110
Visitez Global : Localisation d'applications Web dynamiques avec IIS 5.0 et SQL Server
http://msdn.Microsoft.com/msdnmag/issues/01/05/global/default.aspx
Visitez Global : Conception de Site Web basé sur ASP pour prendre en charge de globalisation
http://msdn.Microsoft.com/msdnmag/issues/0700/Localize/default.aspx
315616 Comment détecter une langue du Client dans un Active Server Pages Page dans IIS
http://support.Microsoft.com/?ID=315616
Tableau de paramètres régionaux ID(LCID)
http://msdn2.Microsoft.com/en-us/library/0h88fahh.aspx
Espace de noms System.Globalization
http://msdn2.Microsoft.com/en-us/library/System.Globalization (vs.71) .aspx
Ressources et localisation à l'aide du.NET Framework SDK
http://msdn2.Microsoft.com/en-us/library/aa309421 (VS.71) .aspx
Ressources dans les Applications ASP.NET
http://msdn2.Microsoft.com/en-us/library/1ztca10y (vs.71) .aspx
ASP.NET <globalization>élément de configuration
</globalization>http://msdn2.Microsoft.com/en-us/library/hy4kkhe0 (vs.71) .aspx
Conception et mise en oeuvre des directives pour les Clients Web - globalisation et localisation
http://msdn2.Microsoft.com/en-us/library/ms978628.aspx
Site officiel Microsoft ? Global Development and Computing Portal
http://msdn.Microsoft.com/en-us/goglobal/bb688096
Développement d'Applications mondialisables
http://msdn2.Microsoft.com/en-us/library/h6270d0z (vs.71) .aspx
Architecture de globalisation pour ASP.NET
http://msdn2.Microsoft.com/en-us/library/aa478974.aspx
Shared Computer Toolkit de localisation d'entreprise - pour développer des Applications localisées Microsoft ASP.NET
http://msdn2.Microsoft.com/en-us/library/aa479334.aspx
Typographie Microsoft
http://www.Microsoft.com/typography/default.mspx
839861 Une exception System.Resources.MissingManifestResourceException se produit lorsque vous essayez d'accéder à une ressource localisée

Glossaire

ANSI Acronyme de American National Standards Institute. Dans ce contexte, il représente une page de codes spécifique pour un langue spécifique par caractère ensemble. Désigne le plus souvent à la page de codes anglais (windows-1252).

ASCII Un schéma de codage 1 octet (ou 7 bits). Seuls les caractères dans le plage de 0 à 127 sont normalisés. La plage 128 à 255 est extensions au format ASCII et non partie de la norme. Un exemple de ceci est la différence entre le coin supérieur plage de la table ASCII OEM et de la table ASCII VB.

Jeu de caractères La définition utilisée principalement pour Internet Explorer et les navigateurs qui indique à le navigateur comment interpréter les données de caractères. Exemple : Response.charSet = « iso-8859-1. »

Page de codes Une table de conversion qui spécifie la façon dont les caractères sont codés. (généralement utilisé pour les serveurs).

Globalisation La globalisation est un processus de conception et création d'un application afin que les exigences uniques d'une culture, la région ou le national et les besoins linguistiques peuvent être satisfaites. En d'autres termes vous créez une application dans un qu'il peut être localisé ultérieurement consiste globalisation.

Paramètres régionaux/Culture Langue et région spécifiques/préférences de formats, y compris, la date et les formats de calendrier, formats, formats de devise, la casse, le tri d'heure et comparaison de chaînes, formats d'adresse, téléphone, les formats de nombre, les formats de papier, unité de mesure, écriture de direction, etc..

LocaleID (LCID) Une valeur DWORD qui spécifie le langage identificateur et le tri ID il peut être utilisé pour spécifier les formats de région spécifique pour ex date/heure etc. doit être mis en forme en fonction de.

Adaptabilité Capacité d'une application pour présenter un contenu pour le demandée langues/paramètres régionaux.

Localisation La localisation est le processus de traduction d'une interface utilisateur dans langues spécifiques et/ou des paramètres régionaux.

Jeu de caractères codés sur plusieurs octets Un jeu de caractères dans lequel les caractères sont composés de deux ou plus d'octets, telles que le japonais. UTF-8 se situe également dans cette catégorie. (Unicode est techniquement dans cette catégorie, mais dans Windows, il a sa propre catégorie.)

Unicode Un schéma de codage de 2 octets. Windows utilise Unicode en interne. N'importe quel API spécifiquement pour Unicode est signifié par « W » à la fin de la fonction nom. Également appelé wide char ; ne peut pas être utilisé directement à partir du web applications.

UTF-8 Un codage de caractères où un caractère peut être représenté par 1-6 octets. Dans Windows, la plage est 1-3 octets. Pas pris en charge sous NT4 pour le web applications. Pour plus d'informations informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
175392Prise en charge UTF8

Jeu de caractères étendus Un alias pour Unicode. Également appelé DBCS (double byte character la valeur), UCS-2, UTF-16.
Comme toujours, n'hésitez pas à soumettre des idées sur des sujets que vous souhaitez adressée dans les chroniques à venir ou dans la Base de connaissances à l'aide de la Demandez-le .

Propriétés

Numéro d'article: 893663 - Dernière mise à jour: jeudi 21 mars 2013 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Active Server Pages 4.0
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 2.0
Mots-clés : 
kbaspnet kbhowto kbasp kbmt KB893663 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 893663
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com