web-dev-qa-db-fra.com

Ai-je besoin d'un anglais à côté de la localisation de la base qui contiendrait exactement la même "traduction"?

Je m'attendrais à ce que le fichier de base contienne mes mots anglais puisque mon projet a "Localisation région de développement native" définie sur Anglais.

Mise à jour - pour clarifier ma question:

enter image description here

32
Pieter

Bien que je ne sois pas tout à fait sûr de bien comprendre cela, je vais essayer de répondre à votre question, TTBOMK.

Supposons que vous utilisiez NSLocalizedString(key, comment) à partir de votre code. Vous pouvez clairement voir que le premier argument est en fait une clé pour une chaîne, plutôt que la chaîne traduite (ou à traduire) elle-même. Par conséquent, lorsque vous "écrivez du code", vous n'écrivez pas de chaînes dans la langue de base, ni dans aucune autre langue. Vous devriez le penser comme si vous ajoutiez des espaces réservés aux chaînes dans votre code.

Ensuite, vous devez créer un fichier Localizable.strings pour chaque langue que vous souhaitez prendre en charge, sous la forme key = value;. Pour que votre interface utilisateur apparaisse au moins dans une langue lisible par l'homme, vous devez avoir au moins un fichier Localizable.strings avec les valeurs de chaîne appropriées pour chaque clé de substitution.

Par exemple: si vous avez NSLocalizedString(@“ConfirmationButtonTitle", @“Yada yada”) dans votre code, il est donc tout à fait logique de disposer d'un fichier Localizable.strings contenant l'élément ”GreenButtonTitle” = “Tap here to confirm”;. Si vous ne créez pas de fichier Localizable.strings ou si aucun fichier Localizable.strings ne contient la clé GreenButtonTitle, le titre du bouton revient à ConfirmationButtonTitle, car il s'agit du nom de la clé de substitution.

Cela dit, la plupart des gens préfèrent nommer leurs clés exactement comme des valeurs de chaîne pour diverses raisons. C’est sans doute une pratique commode - et très courante -, mais elle pourrait conduire à des conflits dans l’esprit des gens.

Ainsi, si vous deviez créer l'exemple NSLocalizedString précédent comme NSLocalizedString(@“Tap here to confirm", @“Yada yada”), votre fichier Localizable.strings par défaut/de base contiendrait probablement un élément tel que “Tap here to confirm” = “Tap here to confirm”;.

Ce qui se passe ici ne signifie pas que vous vous répétez, mais que vous nommez votre clé exactement comme la valeur de chaîne de votre langue de base, c’est tout.

MODIFIER

Il y a toujours eu un concept de langage de base, mais si je comprends bien, Xcode 5 le souligne encore plus: c’est bien. Si votre langue de base est l'anglais, il n'est pas nécessaire d'avoir à nouveau un fichier Localizable.strings pour l'anglais.

14
Ali

Outre la question de la langue que les utilisateurs finaux verront, vous devez également prendre en compte ce qui sera affiché dans l'AppStore ..___ Mon expérience actuelle est que si vous utilisez Base pour l'anglais, l'anglais n'apparaîtra pas dans la liste des langues prises en charge (comment Apple sait dans quelle langue se trouve votre localisation de base) dans la description de votre application.

J'ai rencontré ce problème moi-même - base (anglais), allemand et russe

Les paramètres cibles font référence à:

Localization native development region = en

Mais sur Appstore, il apparaît sous cette forme:

Languages: German, Russian

aucune référence à l'anglais

J'envisage de dupliquer la localisation de base en anglais (ce n'est pas une priorité, car les utilisateurs voient sur les captures d'écran que l'application fonctionne de toute façon en anglais)

Édition: Il semble y avoir un comportement différent dans iOS8 - Les paramètres de l'application (Settings.bundle) semblent ignorer la traduction de base, si l'une des traductions correspond à votre "ordre de langue préféré".

En d’autres termes, l’application est localisée: Base, allemand, russe . L’iPhone est configuré pour utiliser l’anglais, l’ordre de préférence des langues étant l’anglais, l’allemand et le russe.

Les paramètres de l'application entrent en ... allemand!

Encore une fois: ceci s'applique uniquement aux paramètres pas à l'application elle-même!

18
Nick Entin

Selon la documentation (faites défiler jusqu'à Création de fichiers de chaînes pour le texte d'utilisateur dans votre code), vous ne devez pas ajouter Localizable.strings à la localisation de base. Même si la langue de développement est l'anglais, créez un dossier séparé et Localizable.strings pour l'anglais. Créez-en d'autres pour chaque langue supplémentaire que vous souhaitez ajouter.

Lectures complémentaires

0
Suragch