Oui, mais ce n'est pas ce que vous pensez.
Vous pouvez prendre un fichier de chaînes et le charger dans une NSString
puis de le transformer en un dictionnaire en utilisant -[NSString propertyListFromStringsFileFormat]
.
Cela vous permettra de stocker en mémoire vos chaînes de caractères traduites de manière personnalisée.
Pour ce qui est de l'utilisation effective, vous devrez définir des fonctions de traduction personnalisées. IE, vous ne pouvez pas utiliser NSLocalizedString()
et ses amis. Heureusement, genstrings
(l'utilitaire utilisé pour générer des fichiers de chaînes de caractères) vous permet de spécifier noms de fonctions personnalisées :
genstrings -s "JPLocalizedString" ...
Cela signifie que dans le code, vous pouvez définir :
NSString* JPLocalizedString(NSString *key, NSString *comment) {
return [myLoadedStrings objectForKey:key];
}
Ainsi que JPLocalizedStringFromTable()
, JPLocalizedStringFromTableInBundle()
, JPLocalizedStringWithDefaultValue()
. genstrings
va ramasser tout ça. (En d'autres termes, ce n'est pas parce que NSLocalizedString
est une macro ne signifie pas que votre version doit l'être)
Si vous faites cela et utilisez ces JPLocalizedString
variantes, alors genstrings
générera toujours vos fichiers de chaînes de caractères pour vous (à condition que vous utilisiez l'option -s
drapeau).
Une fois que ces fonctions sont appelées, vous pouvez utiliser le mécanisme de recherche que vous voulez, en revenant par défaut à la fonction NSLocalizedString
des versions si vous ne trouvez rien.