Localisation d'applications ASP.NET
Copie et traduction
La manière la plus simple de localiser une page Web consiste généralement à en créer une copie et à la traduire dans la langue cible. Ce procédé fonctionne correctement pour le contenu statique qui ne nécessite que peu de gestion. Pour prendre en charge ce modèle pour les pages ASP.NET, vous pouvez définir l'attribut Culture à l'aide de la directive Page. Toutes les méthodes dépendant des paramètres locaux prennent la valeur de l'attribut Culture.
L'exemple suivant illustre l'exécution de cette opération pour les trois versions indépendantes localisées d'une page. La propriété Culture est définie sur chaque page pour déterminer le format de la date :
<%@Page Culture="de-DE" Language="C#" %>
...
<%=DateTime.Now.ToString("f", null)%>
<%@Page Culture="de-DE" Language="VB" %>
...
<%=DateTime.Now.ToString("f", Nothing)%>
<%@Page Culture="de-DE" Language="JScript" %>
...
<%=DateTime.Now.ToString("f", null)%>
|
|
C#
|
VB
|
JScript
|
|
Localisation et contrôles
Une amélioration par rapport à l'approche copie/traduction simple consiste à utiliser des contrôles pour prélever la culture de la page principale. Dans l'exemple suivant, l'image de l'indicateur et la barre de recherche sont des contrôles. Le contenu rendu varie selon la culture de la page hôte. Pour prendre en charge cette fonction, l'attribut UICulture est également ajouté à chaque page :
<%@Page Culture="de-DE" UICulture="de-DE" Language="C#" %>
<%@Page Culture="de-DE" UICulture="de-DE" Language="VB" %>
<%@Page Culture="de-DE" UICulture="de-DE" Language="JScript" %>
|
|
C#
|
VB
|
JScript
|
|
Le contrôle d'indicateur (Flag.ascx), par exemple, utilise simplement le nom de la culture pour générer l'attribut Src d'une balise <img> :
<%@Import Namespace="System.Globalization"%>
<script runat="Server" Language="C#">
override protected void Render (HtmlTextWriter writer) {
FlagImage.Src = "../../flags/" + CultureInfo.CurrentCulture + ".jpg";
FlagImage.Alt = CultureInfo. CurrentCulture.NativeName;
base.Render(writer);
}
</script>
<img runat="server" id="FlagImage" />
<%@Import Namespace="System.Globalization"%>
<script runat="Server" Language="VB">
Overrides Protected Sub Render(writer As HtmlTextWriter)
FlagImage.Src = "../../ flags/" & CultureInfo. CurrentCulture.Name & ".jpg"
FlagImage.Alt = CultureInfo. CurrentCulture.NativeName
MyBase.Render(writer)
End Sub
</script>
<img runat="server" id="FlagImage" />
<%@Import Namespace="System.Globalization"%>
<script runat="Server" Language="JScript">
override protected function Render (writer:HtmlTextWriter) : void {
FlagImage.Src = "../../flags/" + CultureInfo.CurrentCulture + ".jpg";
FlagImage.Alt = CultureInfo. CurrentCulture.NativeName;
base.Render(writer);
}
</script>
<img runat="server" id="FlagImage" />
|
|
C#
|
VB
|
JScript
|
|
Le contrôle de recherche (Search.ascx) utilise une instruction switch pour initialiser les valeurs d'une étiquette et d'une zone de texte, mais le nom de la culture peut également être le paramètre d'une requête de base de données :
void LocalizeSearchText() {
switch(String.Intern(CultureInfo .CurrentUICulture.Name)) {
case "en-US":
SearchText.Text = "Clinton";
SearchButton.Text = "Search";
break;
case "de-DE":
...
case "ja-JP":
...
default:
SearchButton.Text = "Search";
}
}
Sub LocalizeSearchText()
Select Case String.Intern(CultureInfo .CurrentUICulture.Name))
Case "en-US"
SearchText.Text = "Clinton"
SearchButton.Text = "Search"
Case "de-DE"
...
Case "ja-JP"
...
Case Else
SearchButton.Text = "Search"
End Select
End Sub
public function LocalizeSearchText() : void {
switch(String.Intern(CultureInfo. CurrentUICulture.Name)) {
case "en-US":
SearchText.Text = "Clinton";
SearchButton.Text = "Search";
break;
case "de-DE":
...
case "ja-JP":
...
default:
SearchButton.Text = "Search";
}
}
|
|
C#
|
VB
|
JScript
|
|
- Les pages ASP.NET prennent en charge les attributs Culture et UICulture pour permettre l'utilisation de pages localisées indépendantes.
- Les contrôles des pages peuvent prendre la culture de la page et restituer un contenu dépendant de la culture.
|