Le fichier Localizable.strings (avec un "Z" pas un "S", xCode ne connaissant que l'anglais US) sert à faire une localisation de tout ce que l'on veut, en particulier les dialogues.
Prenons un exemple minimum d'une application anglaise avec cette commande :
display dialog "Give the file name"
Si vous voulez localiser votre application en français, espagnol, italien, etc, vous n'allez pas faire N versions de la commande display dialog avec des IF imbriqués de test, mais une seul pointant sur ce fichier Localizable.strings. La commande commune sera :
set messageUn to localized string "Message1" from table "Localizable"
display dialog messageUn
Et le fichier Localizable.strings de la localisation anglaise contiendra :
"Message1" = "Please, Give the file name";
Et le fichier Localizable.strings de la localisation française contiendra :
"Message1" = "Veuillez, Donnez le nom du fichier";
Plusieurs remarques :
Incluant les boutons "Cancel" et "OK". "Cancel" devant être traduit par "Annuler" en français.
set monMessage to localized string "GiveTheFileName" from table "Localizable"
set Cancel to localized string "Cancel" from table "Localizable"
set OK to localized string "OK" from table "Localizable"
display dialog monMessage buttons {Cancel , OK } default button 1
Et le fichier Localizable.strings de la localisation anglaise contiendra :
"GiveTheFileName" = "Please, Give the file name";
"Cancel" = "Cancel";
"OK" = "OK";
Et le fichier Localizable.strings de la localisation française contiendra :
"GiveTheFileName" = "Veuillez, Donnez le nom du fichier";
"Cancel" = "Annuler";
"OK" = "OK";
Astuce : Si il y a une erreure dans le fichier Localizable.strings pour retrouver la clef "GiveTheFileName", c'est la clef elle-même qui est affichée, d'ou mon choix de son nom "GiveTheFileName" nom significatif du dialogue.
Notez, mon exemple est un peu académique, dans la pratique et suivant le contexte, xCode parfois traduit tout seul. Par exemple il mettra "Annuler" pour une commande simple comme [display dialog "toto"], mais ne traduira pas si il y a les boutons comme dans [display dialog "toto2" buttons {"Cancel", "OK"}].
Pour mon usage, la commande display dialog se trouvant à de nombreuses places de mon script, j'ai mis les variables Cancel et OK en GLOBAL. Ce qui me permet de n'avoir que deux lignes de code, soit :
set monMessage to localized string "GiveTheFileName" from table "Localizable"
display dialog monMessage buttons {Cancel , OK } default button 1
Il n'y a pas de possibilité direct de créer le fichier Localizable.strings dans xCode, comme cela ce fait pour InfoPlist.strings. Il faut soit :
C'est le cas normal de création pour une nouvelle application xCode. Problème, il n'y a pas de possibilité directe dans xCode comme pour infoplist. Il faut créer un fichier "Empty file in project" avec comme nom Localizable.strings. Ensuite Inspecteur Cd+I, "Make File Localisable" (placement virtuel dans English.lproj, il ne le sera réellement qu'après la compilation dans l'application finale), puis "add Localization".
En image cela donne :
Dans xCode sélectionnez "New File..."
Sélectionnez " Empty file in project" car il n'y a pas de ".strings" file dans la liste.
Taper le nom du fichier "Localizable.strings"
Votre fichier apparaît dans la liste des Resources.
Sélectionner votre fichier Localizable.strings et faites Cd+I pour appeler l'inspecteur d'information.
Notez, il est du type text.plist.strings. Passer le en UTF-16.
Enfin, cliquer sur "Make File Localizable".
Pendant que nous y sommes, créons la localisation française.
Voilà, nos deux fichiers sont prêts. Reste à introduire les données dedans.
Je donne cette méthode pour information au cas ou un ami vous donne un fichier tout fait, car je recommande d'utiliser la méthode 1 directement dans xCode.
Dans cet exemple j'ai utilisé BBEdit, et sauvé par erreur le fichier en format UTF-8, car c'est l'option implicite de BBEdit. Apple recommande en UTF-16. Faites le si-non, problème pour une localisation en Japonais.
Pour placer le fichier Localizable.strings dans votre projet. Commencer par le placer dans le bon dossier xxx.lproj. Soit : English.lproj, French.lproj, etc
Puis, comme d'habitude glisser/déposer sur le group Ressources de votre projet xCode, le message ci-dessous s'affiche. N'oubliez pas de cocher "Copy items....", et de passer en UTF-16.
Pour obtenir ceci :
Faites la même chose avec le fichier Localizable.strings du bundle français.
L'exemple complet en téléchargement Localisation.zip