Récupérer la langue de Mac OS X

 

Kroc - 22/06/07 : La langue (ou locale), est spécifiée par une chaîne locale. La chaîne locale consiste en un code de langue, un code optionnel de pays, et un code optionnel spécifique au système, chacun séparés par "_". Les codes de pays et de langue sont spécifié dans les standards ISO-639 et ISO-3166. Par exemple, la locale "en" spécifie Anglais et "en_US" spécifie Anglais U.S..

Dans le cadre de Tcl, la langue est utilisée par msgcat. Sous unix/linux, la locale prend la valeur par défaut de ::env(LANG) à l'instant où le package msgcat est chargé. Sous Windows, la locale prend la valeur système en utilisant la base de registre. Sous Mac OS X rien n'étant prévu vous devez utiliser l'astuce suivante :

 # Définition de la langue :
 if {![catch "exec defaults read com.apple.dock loc" lang]} {
    ::msgcat::mclocale $lang
 } elseif {![catch "exec defaults read NSGlobalDomain AppleLocale" lang]} {
    ::msgcat::mclocale $lang
 } else {
    ::msgcat::mclocale en
 }

L'autre solution, propre celle-là, consiste à créer un fichier ~/.MacOSX/environment.plist (genre de ~/.bashrc pour Mac OS X) dans lequel vous enregistrez ça :

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
         <dict>
             <key>LC_ALL</key>
             <string>fr_FR.UTF-8</string>
         </dict>
 </plist>

Vous devez vous reconnecter pour activer la lecture de ce fichier de variables d'environnement, à la suite de quoi msgcat fonctionne enfin correctement.


Catégorie Mac OS X