FAQ ASP.NET/C#
FAQ ASP.NET/C#Consultez toutes les FAQ
Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021
- Quelle est la meilleure technique pour internationaliser une application ?
- Comment permettre à un utilisateur de choisir sa langue d'affichage des textes ?
- Comment afficher une date selon la culture du client ?
- Je modifie le CurrentCulture et pourtant mes textes sont toujours affichés dans la langue par défaut, pourquoi ?
- Qu'est-ce qu'un fichier .resx?
- Comment générer un fichier .resources dynamiquement ?
- Comment utiliser un fichier .resources qui ne se trouve pas dans une dll ?
Il existe différentes solutions pour internationaliser une application:
- Utilisation de fichiers texte
- Utilisation d'une base de données
- Traduction dans le code
- Utilisation des fichiers ressources
Chacune de ces techniques a ses avantages et ses inconvénients. Il faut trouver une technique permet d'allier facilité de maintenance et rapidité d'exécution.
Plusieurs techniques sont prévues par .NET et celle qui paraît être la meilleure est la solution des fichiers ressources. Effectivement, les fichiers ressources sont des fichiers textes optimisés puisqu'au chargement, ils sont entièrement triés afin de limiter les accès qu'ils soient au niveau de la mémoire ou des différents disques.
Lien : Internationalisation d'un site web avec Visual Studio 2005 sans une seule ligne de code
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Comment permettre à un utilisateur de choisir sa langue d'affichage des textes ?
Une grande quantité de sites proposent de choisir la langue d'affichage des textes. Pour faire cela, il suffit d'ajouter une liste déroulante dont les valeurs sont, par exemple, "fr", "fr-BE", "en-US".
En récupérant cette valeur, il suffit alors d'effectuer une modification dynamique de la culture à utiliser ou encore d'utiliser:
string
Lang =
Request.
UserLanguages[
0
];
// Principal Language
CultureInfo CurrentCulture =
new
CultureInfo
(
Lang);
switch
(
CurrentCulture.
Name.
Substring
(
0
,
2
).
ToUpper
(
))
{
case
"FR"
:
LaText.
Text =
"Texte en français..."
;
break
;
case
"EN"
:
default
:
LaText.
Text =
"Text written in English..."
;
break
;
}
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Quelle est la meilleure technique pour internationaliser une application ?
Lien : Je modifie le CurrentCulture et pourtant mes textes sont toujours affichés dans la langue par défaut, pourquoi ?
Plus exactement, il s'agit de se baser sur les paramètres définis dans le navigateur du client...
Lorsqu'un client se connecte à un site, le navigateur, lors de la demande, envoie toute une série d'informations telles que la langue de prédilection et bien d'autres choses.
Il reste donc à récupérer cette valeur et à l'utiliser...
Pour mettre à jour de manière dynamique la culture à utiliser:
string
lang =
Request.
UserLanguages
(
0
) ;
Thread.
CurrentThread.
CurrentCulture =
new
CultureInfo
(
lang) ;
Dès lors, toutes les dates seront formatées selon la culture du client.
Deux raisons sortent du lot:
- la modification se fait dans le code d'un événement. On est donc déjà passé par le Page_Load et les textes sont déjà chargés. Il faut donc s'arranger pour mettre le chargement des textes dans une autre méthode et l'appeler dans le code de l'évènement.
- la page est rechargée sans redéfinir la culture à utiliser.
Il est donc conseillé d'utiliser une variable de session pour stocker la culture à utiliser:
private
void
Page_Load
(
object
sender,
System.
EventArgs e)
{
if
(!
Page.
IsPostBack ||
Session[
"User-Language"
]
==
null
)
{
CultureInfo CurrentCulture =
new
CultureInfo
(
Request.
UserLanguages[
0
]
);
Session[
"User-Language"
]
=
Request.
UserLanguages[
0
];
}
LaText.
Text =
CurrentCulture.
Name;
ChargerTextes
(
);
}
private
void
BuChangeLanguage_Click
(
object
sender,
EventArgs e)
{
Thread.
CurrentThread.
CurrentCulture =
new
CultureInfo
(
DdlLanguage.
SelectedValue);
LaText.
Text =
Thread.
CurrentThread.
CurrentCulture.
Name;
Session[
"User-Language"
]
=
Thread.
CurrentThread.
CurrentCulture.
Name;
ChargerTextes
(
);
}
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Comment permettre à un utilisateur de choisir sa langue d'affichage des textes ?
Il s'agit d'un fichier xml utilisé principalement lors de l'internationalisation d'une application.
Il comprend des chaînes de caractères qui sont lues pour modifier le contenu et l'affichage d'une application.
Lorsque vous utilisez les fichiers ressources et que vous compilez sous Visual Studio, celui-ci se charge de générer le fichier .resources à partir du fichier .resx qui est un simple fichier xml.
Pour générer un fichier et ajouter des valeurs dynamiquement, quelques lignes de code suffisent:
FileStream fs =
new
FileStream
(
" items.resources "
,
FileMode.
OpenOrCreate,
FileAccess.
Write);
IResourceWriter writer =
new
ResourceWriter
(
fs);
writer.
AddResource
(
" clé "
,
" valeur "
);
writer.
Generate
(
);
writer.
Close
(
);
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Comment utiliser un fichier .resources qui ne se trouve pas dans une dll ?
La plupart des tutoriaux présents sur le net expliquent comment utiliser un fichier ressources provenant d'une dll. Lorsque l'on génére le fichier de manière dynamique, le code est légèrement différent:
ResourceManager manager =
ResourceManager.
CreateFileBasedResourceManager
(
"nom fichier sans extension ni culture"
,
"chemin d'accès au fichier"
,
null
);
Exemple:
ResourceManager manager =
ResourceManager.
CreateFileBasedResourceManager
(
"items"
,
Server.
MapPath
(
"."
),
null
);
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Comment générer un fichier .resources dynamiquement ?