IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

4D 2004.2/3 et le fichier KeyBoardMapping.XML

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction ♪

Cette note est en complément de la note technique 4D-200507-20-fr « 4D sur des systèmes étrangers ».

Bien que la version 4D 2004.2 permette la saisie, ainsi que l'affichage multilingues, si vous désirez travailler avec une langue bien précise, il est recommandé que la langue de votre système corresponde à la langue dans laquelle vous allez saisir vos données.

Mais il arrive parfois qu'on soit amené à travailler sur un système donné et avoir à faire des saisies multilingues avec un mélange de caractères Unicode et de caractères non Unicode (voir paragraphe II).

Il peut arriver aussi que la table des caractères utilisée contienne des caractères qui n'appartiennent pas à la police de caractère courante, et qui faussent l'affichage des caractères (voir paragraphe III).

Dans ces deux cas, il vous faudra modifier le fichier KeyboardMapping.XML.

La technique décrite dans cette note est spécifique à ces versions de 4D (2004.2 et 2004.3) et pourra être amenée à évoluer dans les versions ultérieures.

II. Forcer le dialecte

Rappel : le BIT ( Binary digiT) est la plus petite unité de mesure de stockage informatique ne pouvant avoir d'autre valeur (état) que 0 ou 1. Un octet (ou Byte en anglais) est lui-même composé d'une séquence de 8 bits.

Ce procédé est important quand on veut saisir de caractères « double byte » sur un système qui utilise des caractères double byte (caractères à deux octets, ou 16 bits, tels que le japonais, le chinois ou le coréen).

Donc, si la langue de votre système diffère de celle de la version de votre application 4D, pour que la saisie en structure dans votre langue fonctionne correctement, il faut procéder à la manipulation qui consiste à forcer le dialecte dans votre langue d'application dans le fichier KeyboardMapping.XML, qui se trouve dans le dossier 4D Extensions.

Mais avec cette solution les résultats des tris et des recherches pourraient être faussés aussi, car certaines routines internes de 4D comme les routines de tri et de recherche interrogent directement le système sans passer par Script Manager.

Donc si le système n'utilise pas les caractères « double byte » 4D s'initialise en « single byte » (8 octets) même si c'est un 4D localisé dans une langue qui utilise les caractères double byte.


Exemple

Sur un système US si vous voulez développer votre application multilingue en utilisant des caractères japonais en mode structure, il faudrait écrire la ligne de code suivante (<ForceDialect>1041</ForceDialect>) dans le fichier KeyboardMapping.XML.

Avec un 4D localisé en japonais sur un système US, voici les résultats obtenus :

Sans forcer le dialecte :

Pictures 0604x0460




Dans le dialogue de connexion, les caractères japonais apparaissent sous forme de garbage.

Pictures 0572x0244




Dans l'éditeur de structure, les caractères saisis en japonais (exemple nom de table) apparaissent aussi sous forme de « garbage ».

Après modification du fichier KeyboardMapping.XML, avec le même 4D sur le même système, on obtient  :

Pictures 0604x0456




Les caractères japonais apparaissent correctement dans le dialogue de connexion ainsi que dans les autres parties de la structure.

Pictures 0490x0189




Le contenu de votre KeyboardMapping.XML sera donc le suivant :

 
Sélectionnez
    <?xml Version="1.0" Encoding="UTF-8" standalone="no" ?>
    <KeyboardMapping>

       <!--DC_AFRIKAANS = 1078
       DC_ALBANIAN = 1052
       DC_ARABIC_SAUDI_ARABIA = 1025
       DC_ARABIC_IRAQ = 2049
       DC_ARABIC_EGYPT = 3073
       DC_ARABIC_LIBYA = 4097
       DC_ARABIC_ALGERIA = 5121
       DC_ARABIC_MOROCCO = 6145
       DC_ARABIC_TUNISIA = 7169
       DC_ARABIC_OMAN = 8193
       DC_ARABIC_YEMEN = 9217
       DC_ARABIC_SYRIA = 10241
       DC_ARABIC_JORDAN = 11265
       DC_ARABIC_LEBANON = 12289
       DC_ARABIC_KUWAIT = 13313
       DC_ARABIC_UAE = 14337
       DC_ARABIC_BAHRAIN = 15361
       DC_ARABIC_QATAR = 16385
       DC_BASQUE = 1069
       DC_BELARUSIAN = 1059
       DC_BULGARIAN = 1026
       DC_CATALAN = 1027
       DC_CHINESE_TRADITIONAL = 1028
       DC_CHINESE_SIMPLIFIED = 2052
       DC_CHINESE_HONGKONG = 3076
       DC_CHINESE_SINGAPORE = 4100
       DC_CROATIAN = 1050
       DC_CZECH = 1029
       DC_DANISH = 1030
       DC_DUTCH = 1043
       DC_DUTCH_BELGIAN = 2067
       DC_ENGLISH_US = 1033
       DC_ENGLISH_UK = 2057
       DC_ENGLISH_AUSTRALIA = 3081
       DC_ENGLISH_CANADA = 4105
       DC_ENGLISH_NEWZEALAND = 5129
       DC_ENGLISH_EIRE = 6153
       DC_ENGLISH_SOUTH_AFRICA = 7177
       DC_ENGLISH_JAMAICA = 8201
       DC_ENGLISH_CARIBBEAN = 9225
       DC_ENGLISH_BELIZE = 10249
       DC_ENGLISH_TRINIDAD = 11273
       DC_ESTONIAN = 1061
       DC_FAEROESE = 1080
       DC_FARSI = 1065
       DC_FINNISH = 1035
       DC_FRENCH = 1036
       DC_FRENCH_BELGIAN = 2060
       DC_FRENCH_CANADIAN = 3084
       DC_FRENCH_SWISS = 4108
       DC_FRENCH_LUXEMBOURG = 5132
       DC_GERMAN = 1031
       DC_GERMAN_SWISS = 2055
       DC_GERMAN_AUSTRIAN = 3079
       DC_GERMAN_LUXEMBOURG = 4103
       DC_GERMAN_LIECHTENSTEIN = 5127
       DC_GREEK = 1032
       DC_HEBREW = 1037
       DC_HUNGARIAN = 1038
       DC_ICELANDIC = 1039
       DC_INDONESIAN = 1057
       DC_ITALIAN = 1040
       DC_ITALIAN_SWISS = 2064
       DC_JAPANESE = 1041
       DC_KOREAN_WANSUNG = 1042
       DC_KOREAN_JOHAB = 2066
       DC_LATVIAN = 1062
       DC_LITHUANIAN = 1063
       DC_NORWEGIAN = 1044
       DC_NORWEGIAN_NYNORSK = 2068
       DC_POLISH = 1045
       DC_PORTUGUESE = 2070
       DC_PORTUGUESE_BRAZILIAN = 1046
       DC_ROMANIAN = 1048
       DC_RUSSIAN = 1049
       DC_SERBIAN_LATIN = 2074
       DC_SERBIAN_CYRILLIC = 3098
       DC_SLOVAK = 1051
       DC_SLOVENIAN = 1060
       DC_SPANISH_CASTILLAN = 1034
       DC_SPANISH_MEXICAN = 2058
       DC_SPANISH_MODERN = 3082
       DC_SPANISH_GUATEMALA = 4106
       DC_SPANISH_COSTA_RICA = 5130
       DC_SPANISH_PANAMA = 6154
       DC_SPANISH_DOMINICAN_REPUBLIC = 7178
       DC_SPANISH_VENEZUELA = 8202
       DC_SPANISH_COLOMBIA = 9226
       DC_SPANISH_PERU = 10250
       DC_SPANISH_ARGENTINA = 11274
       DC_SPANISH_ECUADOR = 12298
       DC_SPANISH_CHILE = 13322
       DC_SPANISH_URUGUAY = 14346
       DC_SPANISH_PARAGUAY = 15370
       DC_SPANISH_BOLIVIA = 16394
       DC_SPANISH_EL_SALVADOR = 17418
       DC_SPANISH_HONDURAS = 18442
       DC_SPANISH_NICARAGUA = 19466
       DC_SPANISH_PUERTO_RICO = 20490
       DC_SWEDISH = 1053
       DC_SWEDISH_FINLAND = 2077
       DC_THAI = 1054
       DC_TURKISH = 1055
       DC_UKRAINIAN = 1058
       DC_VIETNAMESE = 1066
       -->

       <Version>2</Version>

       <Enable_Keyboard_Switching>1</Enable_Keyboard_Switching>

       <ForceDialect>1041</ForceDialect>

       <KeyBoardSync>-1</KeyBoardSync>

    </KeyboardMapping>

III. Désactiver la « Font Matching »

Ce procédé intervient dans le cas où la police d'affichage caractère diffère de la police courante :

Dans le cas où vous voudriez saisir des données en mode Utilisation dans une langue différente de celle de votre système, il est nécessaire de forcer le clavier en utilisant l'option dans la liste des propriétés de l'objet (Configuration du clavier).


Pour certaines langues la police utilisée pour l'affichage des caractères ne contient pas certains caractères, ce qui risque de donner à l'affichage une représentation du caractère différente de celle qu'on devrait avoir, car le système utilise une police de substitution pour afficher le caractère qui ne peut pas être affiché dans la police courante. Pour contourner ce problème, il est nécessaire de désactiver la « font matching » dans le fichier KeyboardMapping.xml en mettant :

<KeyBoardSync>0</ KeyBoardSync>.


Exemple

Prenons l'exemple du caractère «?» polonais qui ne pourra s'afficher correctement qu'en désactivant la « font matching » sur un système WinXP polonais avec une version US 4D.

Voici ci-dessous les deux résultats obtenus.

  • En laissant la valeur par défaut (-1) de keyBoardSync :
Pictures 0576x0246
Le caractère «ñ» polonais n'est pas correctement affiché
  • En le forçant à « désactivé » (0) :

Dans ce cas on demande au système de ne pas utiliser une police de substitution.

Pictures 0579x0270
Le caractère «ñ» polonais est correctement affiché




Dans ce cas voici le contenu du fichier KeyboardMapping.XML :

 
Sélectionnez
    <?xml Version="1.0" Encoding="UTF-8" standalone="no" ?>
    <KeyboardMapping>

       <!--DC_AFRIKAANS = 1078
       DC_ALBANIAN = 1052
       DC_ARABIC_SAUDI_ARABIA = 1025
       DC_ARABIC_IRAQ = 2049
       DC_ARABIC_EGYPT = 3073
       DC_ARABIC_LIBYA = 4097
       DC_ARABIC_ALGERIA = 5121
       DC_ARABIC_MOROCCO = 6145
       DC_ARABIC_TUNISIA = 7169
       DC_ARABIC_OMAN = 8193
       DC_ARABIC_YEMEN = 9217
       DC_ARABIC_SYRIA = 10241
       DC_ARABIC_JORDAN = 11265
       DC_ARABIC_LEBANON = 12289
       DC_ARABIC_KUWAIT = 13313
       DC_ARABIC_UAE = 14337
       DC_ARABIC_BAHRAIN = 15361
       DC_ARABIC_QATAR = 16385
       DC_BASQUE = 1069
       DC_BELARUSIAN = 1059
       DC_BULGARIAN = 1026
       DC_CATALAN = 1027
       DC_CHINESE_TRADITIONAL = 1028
       DC_CHINESE_SIMPLIFIED = 2052
       DC_CHINESE_HONGKONG = 3076
       DC_CHINESE_SINGAPORE = 4100
       DC_CROATIAN = 1050
       DC_CZECH = 1029
       DC_DANISH = 1030
       DC_DUTCH = 1043
       DC_DUTCH_BELGIAN = 2067
       DC_ENGLISH_US = 1033
       DC_ENGLISH_UK = 2057
       DC_ENGLISH_AUSTRALIA = 3081
       DC_ENGLISH_CANADA = 4105
       DC_ENGLISH_NEWZEALAND = 5129
       DC_ENGLISH_EIRE = 6153
       DC_ENGLISH_SOUTH_AFRICA = 7177
       DC_ENGLISH_JAMAICA = 8201
       DC_ENGLISH_CARIBBEAN = 9225
       DC_ENGLISH_BELIZE = 10249
       DC_ENGLISH_TRINIDAD = 11273
       DC_ESTONIAN = 1061
       DC_FAEROESE = 1080
       DC_FARSI = 1065
       DC_FINNISH = 1035
       DC_FRENCH = 1036
       DC_FRENCH_BELGIAN = 2060
       DC_FRENCH_CANADIAN = 3084
       DC_FRENCH_SWISS = 4108
       DC_FRENCH_LUXEMBOURG = 5132
       DC_GERMAN = 1031
       DC_GERMAN_SWISS = 2055
       DC_GERMAN_AUSTRIAN = 3079
       DC_GERMAN_LUXEMBOURG = 4103
       DC_GERMAN_LIECHTENSTEIN = 5127
       DC_GREEK = 1032
       DC_HEBREW = 1037
       DC_HUNGARIAN = 1038
       DC_ICELANDIC = 1039
       DC_INDONESIAN = 1057
       DC_ITALIAN = 1040
       DC_ITALIAN_SWISS = 2064
       DC_JAPANESE = 1041
       DC_KOREAN_WANSUNG = 1042
       DC_KOREAN_JOHAB = 2066
       DC_LATVIAN = 1062
       DC_LITHUANIAN = 1063
       DC_NORWEGIAN = 1044
       DC_NORWEGIAN_NYNORSK = 2068
       DC_POLISH = 1045
       DC_PORTUGUESE = 2070
       DC_PORTUGUESE_BRAZILIAN = 1046
       DC_ROMANIAN = 1048
       DC_RUSSIAN = 1049
       DC_SERBIAN_LATIN = 2074
       DC_SERBIAN_CYRILLIC = 3098
       DC_SLOVAK = 1051
       DC_SLOVENIAN = 1060
       DC_SPANISH_CASTILLAN = 1034
       DC_SPANISH_MEXICAN = 2058
       DC_SPANISH_MODERN = 3082
       DC_SPANISH_GUATEMALA = 4106
       DC_SPANISH_COSTA_RICA = 5130
       DC_SPANISH_PANAMA = 6154
       DC_SPANISH_DOMINICAN_REPUBLIC = 7178
       DC_SPANISH_VENEZUELA = 8202
       DC_SPANISH_COLOMBIA = 9226
       DC_SPANISH_PERU = 10250
       DC_SPANISH_ARGENTINA = 11274
       DC_SPANISH_ECUADOR = 12298
       DC_SPANISH_CHILE = 13322
       DC_SPANISH_URUGUAY = 14346
       DC_SPANISH_PARAGUAY = 15370
       DC_SPANISH_BOLIVIA = 16394
       DC_SPANISH_EL_SALVADOR = 17418
       DC_SPANISH_HONDURAS = 18442
       DC_SPANISH_NICARAGUA = 19466
       DC_SPANISH_PUERTO_RICO = 20490
       DC_SWEDISH = 1053
       DC_SWEDISH_FINLAND = 2077
       DC_THAI = 1054
       DC_TURKISH = 1055
       DC_UKRAINIAN = 1058
       DC_VIETNAMESE = 1066
       -->

       <Version>2</Version>

       <Enable_Keyboard_Switching>1</Enable_Keyboard_Switching>

       <KeyBoardSync>0</KeyBoardSync>

    </KeyboardMapping>

N.B. On peut très bien combiner le fait de forcer le dialecte et de désactiver la recherche de la police de substitution puisqu'il s'agit deux fonctions indépendantes.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.