Voici la solution aux problèmes de format des dates, prix ou nombres en ASP pour les sites multi-langues.
Programmation > ASP
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Fixer en ASP, le format d'affichage d'un site multilingue.
  Auteur : Yvan VANWYNSBERGHE

Voici la solution aux problèmes de format des dates, prix ou nombres en ASP pour les sites multi-langues.

Publicité 
Le format d'affichage d'une date , d'un prix ou même d'un nombre diffère suivant les langues et même parfois suivant les pays. Exemple : pour indiquer le 3 octobre 2001 en français on écrit 03/10/2001, tandis qu'en anglais on écrit 10/03/2001.

Pour définir dans le format d'affichage de ces grandeurs, ASP a prévu l'emploi du "Local ID" lié à l'objet "Session". Ainsi pour fixer dans une page ASP l'affichage des valeurs dans le format français, il suffit d'écrire :

<%
Session.LCID = 1036      'LCID pour le français standard
%>


A chaque langue ou pays correspond une valeur de cet identifiant. Si vous souhaitez définir le format d'affichage suivant les préférences de l'internaute, voici une fonction permettant d'obtenir la bonne valeur en fonction de la langue ou du pays de l'internaute :

<%
Function GetLCID()

Dim VisitorLanguage
Dim MyLCID
Dim PosComma

VisitorLanguage = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
PosComma = InStr(1, VisitorLanguage, ",")
If PosComma > 0 Then
VisitorLanguage = Left(VisitorLanguage, PosComma - 1)
End If

Select Case LCase(VisitorLanguage)
Case "af"
MyLCID = 1078 ' Africanaire
Case "sq"
MyLCID = 1052 ' Albanais
Case "ar-sa"
MyLCID = 1025 ' Arabe(Arabie Saoudite)
Case "ar-iq"
MyLCID = 2049 ' Arabe(Iraq)
Case "ar-eg"
MyLCID = 3073 ' Arabe(Egypte)
Case "ar-ly"
MyLCID = 4097 ' Arabe(Libie)
Case "ar-dz"
MyLCID = 5121 ' Arabe(Algerie)
Case "ar-ma"
MyLCID = 6145 ' Arabe(Maroc)
Case "ar-tn"
MyLCID = 7169 ' Arabic(Tunisie)
Case "ar-om"
MyLCID = 8193 ' Arabe(Sultana d'Oman)
Case "ar-ye"
MyLCID = 9217 ' Arabe(Yemen)
Case "ar-sy"
MyLCID = 10241 ' Arabe(Syrie)
Case "ar-jo"
MyLCID = 11265 ' Arabe(Jordanie)
Case "ar-lb"
MyLCID = 12289 ' Arabe(Liban)
Case "ar-kw"
MyLCID = 13313 ' Arabe(Koweit)
Case "ar-ae"
MyLCID = 14337 ' Arabe(Emirats Arabes Unis)
Case "ar-bh"
MyLCID = 15361 ' Arabe(Bahrein)
Case "ar-qa"
MyLCID = 16385 ' Arabe(Qatar)
Case "eu"
MyLCID = 1069 ' Basque
Case "bg"
MyLCID = 1026 ' Bulgare
Case "be"
MyLCID = 1059 ' Belarusse
Case "ca"
MyLCID = 1027 ' Catalan
Case "zh-tw"
MyLCID = 1028 ' Chinois(Taiwan)
Case "zh-cn"
MyLCID = 2052 ' Chinois(République Populaire de Chine)
Case "zh-hk"
MyLCID = 3076 ' Chinois(Hong Kong)
Case "zh-sg"
MyLCID = 4100 ' Chinois(Singapore)
Case "hr"
MyLCID = 1050 ' Croate
Case "cs"
MyLCID = 1029 ' Tchèque
Case "da"
MyLCID = 1030 ' Danois
Case "n"
MyLCID = 1043 ' Flaman(Standard)
Case "nl-be"
MyLCID = 2067 ' Flaman(Belgique)
Case "en"
MyLCID = 9 ' Anglais
Case "en-us"
MyLCID = 1033 ' Anglais(USA)
Case "en-gb"
MyLCID = 2057 ' Anglais(UK)
Case "en-au"
MyLCID = 3081 ' Anglais(Australie)
Case "en-ca"
MyLCID = 4105 ' Anglais(Canada)
Case "en-nz"
MyLCID = 5129 ' Anglais(Nouvelle Zélande)
Case "en-ie"
MyLCID = 6153 ' Anglais(Irelande)
Case "en-za"
MyLCID = 7177 ' Anglais(Afrique du Sud)
Case "en-jm"
MyLCID = 8201 ' Anglais(Jamaique)
Case "en"
MyLCID = 9225 ' Anglais(Caraibe)
Case "en-bz"
MyLCID = 10249 ' Anglais(Belize)
Case "en-tt"
MyLCID = 11273 ' Anglais(Trinidad)
Case "et"
MyLCID = 1061 ' Estonien
Case "fo"
MyLCID = 1080 ' Faeroese
Case "fa"
MyLCID = 1065 ' Farsi
Case "fi"
MyLCID = 1035 ' Finnois
Case "fr"
MyLCID = 1036 ' Français(Standard)
Case "fr-be"
MyLCID = 2060 ' Français(Belgique)
Case "fr-ca"
MyLCID = 3084 ' Français(Canada)
Case "fr-ch"
MyLCID = 4108 ' Français(Suisse)
Case "fr-lu"
MyLCID = 5132 ' Français(Luxembourg)
Case "gd"
MyLCID = 1084 ' Gaëlique(Ecosse)
Case "gd-ie"
MyLCID = 2108 ' Gaëlique(Irlande)
Case "de"
MyLCID = 1031 ' German(Standard)
Case "de-ch"
MyLCID = 2055 ' Allemand(Suisse)
Case "de-at"
MyLCID = 3079 ' Allemand(Autriche)
Case "de-lu"
MyLCID = 4103 ' Allemand(Luxembourg)
Case "de-li"
MyLCID = 5127 ' Allemand(Liechtenstein)
Case "e"
MyLCID = 1032 ' Grecque
Case "he"
MyLCID = 1037 ' Hébreu
Case "hi"
MyLCID = 1081 ' Hindi
Case "hu"
MyLCID = 1038 ' Hongrois
Case "is"
MyLCID = 1039 ' Islandais
Case "in"
MyLCID = 1057 ' Indonésien
Case "it"
MyLCID = 1040 ' Italien(Standard)
Case "it-ch"
MyLCID = 2064 ' Italien(Suisse)
Case "ja"
MyLCID = 1041 ' Japonais
Case "ko"
MyLCID = 1042 ' Koréen
Case "ko"
MyLCID = 2066 ' Koréen(Johab)
Case "lv"
MyLCID = 1062 ' Letton
Case "lt"
MyLCID = 1063 ' Lithuanien
Case "mk"
MyLCID = 1071 ' Macédonien
Case "ms"
MyLCID = 1086 ' Malaysien
Case "mt"
MyLCID = 1082 ' Maltais
Case "no"
MyLCID = 1044 ' Norvégien(Bokmal)
Case "no"
MyLCID = 2068 ' Norvégien(Nynorsk)
Case "p"
MyLCID = 1045 ' Polonais
Case "pt-br"
MyLCID = 1046 ' Portugais(Brésil)
Case "pt"
MyLCID = 2070 ' Portugais(Standard)
Case "rm"
MyLCID = 1047 ' Rhaeto-Romanic
Case "ro"
MyLCID = 1048 ' Roumain
Case "ro-mo"
MyLCID = 2072 ' Roumain(Moldavie)
Case "ru"
MyLCID = 1049 ' Russe
Case "ru-mo"
MyLCID = 2073 ' Russe(Moldavie)
Case "sz"
MyLCID = 1083 ' Sami(Lapon)
Case "sr"
MyLCID = 3098 ' Serbe(Cyrillique)
Case "sr"
MyLCID = 2074 ' Serbe(Latin)
Case "sk"
MyLCID = 1051 ' Slovaque
Case "s"
MyLCID = 1060 ' Slovène
Case "sb"
MyLCID = 1070 ' Sorbian
Case "es"
MyLCID = 1034 ' Espagnol(Espagne - traditionnel)
Case "es-mx"
MyLCID = 2058 ' Espagnol(Mexique)
Case "es"
MyLCID = 3082 ' Espagnol(Espagne - Moderne)
Case "es-gt"
MyLCID = 4106 ' Espagnol(Guatemala)
Case "es-cr"
MyLCID = 5130 ' Espagnol(Costa Rica)
Case "es-pa"
MyLCID = 6154 ' Espagnol(Panama)
Case "es-do"
MyLCID = 7178 ' Espagnol(Republique Dominicaine)
Case "es-ve"
MyLCID = 8202 ' Espagnol(Venezuela)
Case "es-co"
MyLCID = 9226 ' Espagnol(Colombie)
Case "es-pe"
MyLCID = 10250 ' Espagnolnish(Perou)
Case "es-ar"
MyLCID = 11274 ' Espagnol(Argentine)
Case "es-ec"
MyLCID = 12298 ' Espagnol(Equateur)
Case "es-c"
MyLCID = 13322 ' Espagnol(Chili)
Case "es-uy"
MyLCID = 14346 ' Espagnol(Uruguay)
Case "es-py"
MyLCID = 15370 ' Espagnol(Paraguay)
Case "es-bo"
MyLCID = 16394 ' Espagnol(Bolivie)
Case "es-sv"
MyLCID = 17418 ' Espagnol(El Salvador)
Case "es-hn"
MyLCID = 18442 ' Espagnol(Honduras)
Case "es-ni"
MyLCID = 19466 ' Espagnol(Nicaragua)
Case "es-pr"
MyLCID = 20490 ' Espagnol(Porto Rico)
Case "sx"
MyLCID = 1072 ' Sutu
Case "sv"
MyLCID = 1053 ' Suédois
Case "sv-fi"
MyLCID = 2077 ' Suédois(Finlande)
Case "th"
MyLCID = 1054 ' Thaï
Case "ts"
MyLCID = 1073 ' Tsonga
Case "tn"
MyLCID = 1074 ' Tswana
Case "tr"
MyLCID = 1055 ' Turc
Case "uk"
MyLCID = 1058 ' Ukrainien
Case "ur"
MyLCID = 1056 ' Ourdou
Case "ve"
MyLCID = 1075 ' Venda
Case "vi"
MyLCID = 1066 ' Vietnamien
Case "xh"
MyLCID = 1076 ' Xhosa
Case "ji"
MyLCID = 1085 ' Yiddish
Case "zu"
MyLCID = 1077 ' Zoulou
Case Else
MyLCID = 2048 ' défaut
End Select

GetLCID = MyLCID

End Function
%>

Afin d'éviter la déclaration du "Local ID" dans toutes vos page ASP, vous pouvez fixer sa valeur dans la fonction "Session_OnStart" du fichier "global.asa". Voici un exemple :

<!--#include file = "DefineLCID.asa" -->
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session.LCID = GetLCID()
End Sub
</SCRIPT>

La fonction GetLCID() doit être déclarée dans le fichier "DefineLCID.asa" entre les balises <SCRIPT LANGUAGE=VBScript RUNAT=Server> et </SCRIPT>.

A lire aussi sur Devparadise.com :
  • ASP et la création d'images à la volée
  • Linux/apache/PHP vs Windows 2000/IIS/ASP
  • Manipulation des fonctions de dates en ASP
  • Format de date universelle.
  • Calcul de pourcentages en ASP
  • A télécharger aussi sur Devparadise.com :
  • FCKeditor 2.4.3
  • Téléchargez gratuitement ASP.NET Web Matrix
  • PHAkt 1.0.1
  • Flash Objects 0.9
  • ASP Client Check 1.3

  • © 1997-2005 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    ASP,Format,Date,Nombre,LCID,Session,Global.asa