Possible d'utiliser des variables et/ou des paramètres avec NSLocalizedString?
J'ai essayé d'utiliser une variable comme paramètre d'entrée pour NSLocalizedString, mais tout ce que je reçois en retour est le paramètre d'entrée. Ce que je fais mal? Est-il possible d'utiliser une variable de chaîne de valeur d'un indice pour NSLocalized chaîne?
Par exemple, j'ai quelques chaines que je veux les versions localisées à être affiché. Cependant, je voudrais utiliser une variable comme paramètre à NSLocalizedString, au lieu d'une constante chaîne de caractères. De même, je voudrais inclure les éléments de mise en forme dans le paramètre pour NSLocalizedString, donc je serais en mesure de récupérer une version localisée de la chaîne avec les mêmes paramètres de mise en forme. Puis-je effectuer les opérations suivantes:
Cas 1: Variable NSLocalizedstring:
NSString *varStr = @"Index1";
NSString *string1 = NSLocalizedString(varStr,@"");
Cas 2: Formaté NSLocalizedString:
NSString *string1 = [NSString stringWithFormat:NSLocalizedString(@"This is an %@",@""),@"Apple"];
(Veuillez noter que la variable peut contenir n'importe quoi, pas seulement un ensemble fixe de chaînes de caractères.)
Merci!
Vous devez vous connecter pour publier un commentaire.
Si ce que vous voulez, c'est le retour de la version localisée de "C'est une Pomme/Orange/whatever", vous souhaitez:
(I. e., l'imbrication de
NSLocalizedString()
et[NSString stringWithFormat:]
sont inversés).Si ce que vous voulez, c'est le format à être localisé, mais pas le remplacé en valeur, faire ceci:
Et dans votre
Localizable.strings
:Je veux juste ajouter un très utile définition que j'utilise dans la plupart de mes projets.
Inspiré par des androïdes possibilité, j'ai ajouté cette fonction à mon
header prefix
fichier:Cela vous permet de définir une chaîne localisée semblable à la suivante:
et il peut être utilisé avec:
Pour swift :
Il s'avère que l'absence d'entrée cible est à blâmer. Vérifier simplement que ma version actuelle cible comprend la Localizable.chaîne de fichier résolu le problème!
Si vous avez plus d'une variable dans votre chaîne localisée pouvez-vous utiliser cette solution:
Dans Localizable.les chaînes de
Et l'utilisation stringByReplacingOccurrencesOfString pour insérer les valeurs
"exampleKey" = "%1$@ has bought %3$d apples and %2$d oranges."
[NSString stringWithFormat:NSLocalizedString(@"exampleKey", nil), @"Markus", 4, 3]
Ce serait sortie:Markus has bought 3 apples and 4 oranges
.Localizable.chaîne:
Utilisation:
et
Vos idées devrait fonctionner. Mais si vous obtenez de retour le paramètre d'entrée, cela signifie que le paramètre d'entrée n'a pas été trouvé comme un élément clé dans votre Localizable.fichier de chaînes. Vérifiez la syntaxe et l'emplacement du fichier.