Pluriels et Stringsdict
Gérez les règles de pluriel entre les langues.
Pluriels et Stringsdict est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Le problème des pluriels
L'anglais possède deux formes — 1 élément, 2 éléments — et les développeurs écrivent donc souvent "\(n) item" + (n == 1 ? "" : "s"). Cette approche échoue complètement : l'arabe possède six catégories de pluriel, le russe trois et le japonais une seule. Coder en dur la logique des pluriels est un bug de localisation qui ne demande qu'à se produire.
// FRAGILE — only works for English
let n = 5
let bad = "\(n) item" + (n == 1 ? "" : "s")
print(bad)Les catégories de pluriel
Unicode définit les catégories de pluriel suivantes : zéro, un, deux, peu, beaucoup, autre. Chaque langue en utilise un sous-ensemble. Le système choisit la catégorie appropriée pour un nombre en fonction des règles de la locale ; vous n'écrivez jamais ces règles vous-même.
// English uses: one, other
// Russian uses: one, few, many, other
// Japanese uses: other (only)
// You provide a variant string per category needed.Variantes de pluriel dans un catalogue de chaînes
Dans un catalogue de chaînes, vous indiquez qu'une chaîne possède des variantes de pluriel. Xcode vous permet ensuite de fournir un texte pour chaque catégorie. À l'exécution, la variante correcte est automatiquement choisie en fonction du nombre interpolé et de la locale de l'utilisateur.
// Catalog entry, key "message_count":
// one: "You have %lld message"
// other: "You have %lld messages"
let count = 1
let text = String(localized: "You have \(count) messages")
print(text)L'ancien format .stringsdict
Avant les catalogues de chaînes, les pluriels étaient stockés dans un fichier .stringsdict — une liste de propriétés qui associe une key à une chaîne de format ainsi qu'à des variantes pour chaque catégorie. Vous en trouverez encore dans les anciens projets et elles restent entièrement prises en charge.
// Localizable.stringsdict (plist) structure:
// key: "items_count"
// NSStringLocalizedFormatKey: "%#@items@"
// items: NSStringPluralRuleType
// one: "%lld item"
// other: "%lld items"Anatomie d'une entrée stringsdict
Chaque entrée possède une clé de format, appelée key, qui fait référence à une ou plusieurs variables nommées encapsulées dans %#@name@. Chaque variable déclare son type de règle (NSStringPluralRuleType), le spécificateur de type de valeur (%lld) et une chaîne pour chaque catégorie de pluriel.
// The %#@items@ token expands to the chosen
// plural variant. %lld is the integer placeholder
// substituted inside each variant string.
let n = 3
print(String(localized: "\(n) items selected"))Rechercher une chaîne au pluriel
Depuis le code, le point d’appel ressemble exactement à celui de n’importe quelle chaîne localisée : il vous suffit d’interpoler le nombre. La sélection du pluriel s’effectue à l’intérieur de l’infrastructure, de sorte que la même ligne de Swift fonctionne dans toutes les langues.
func messagesLabel(_ count: Int) -> String {
return String(localized: "You have \(count) messages")
}
print(messagesLabel(0))
print(messagesLabel(1))
print(messagesLabel(7))Pourquoi « un » ne signifie pas seulement 1
Une erreur courante consiste à supposer que la catégorie un signifie exactement le nombre 1. Dans certaines langues, elle couvre tous les nombres qui se terminent par 1, comme 21 ou 31, et le zéro peut constituer une catégorie distincte ou non. Fournissez toujours un texte pour chaque catégorie et laissez les règles décider.
// Russian: 1, 21, 31 -> 'one'
// 2, 3, 4 -> 'few'
// 5..20, 0 -> 'many'
// Never assume one == 1.Combiner les pluriels avec d’autres valeurs
Un format peut contenir plusieurs variables, par exemple un nombre et un nom. Chacune peut être mise au pluriel indépendamment. Dans un catalogue de chaînes, vous indiquez quelle interpolation varie ; le reste reste constant entre les variantes.
let files = 2
let folder = "Photos"
let text = String(
localized: "\(files) files in \(folder)")
// 'files' drives the plural; 'folder' is substituted as-is
print(text)Variantes selon la largeur et l’appareil
Le même mécanisme de catalogue prend en charge les variations selon l’appareil et la largeur, ce qui vous permet d’afficher un libellé court sur une montre et un libellé plus long sur iPad, ou de l’abréger lorsque l’espace est limité. Ces variations fonctionnent avec les variantes de pluriel.
// Catalog can vary by:
// plural: one / other
// device: iPhone / iPad / watch
// width: short / medium / long
let label = String(localized: "Notifications")
print(label)Tester la mise au pluriel
Pour vérifier vos variantes, exécutez l’application dans chaque langue cible à l’aide de la substitution de langue de localisation du schéma de Xcode, ou utilisez la pseudolangue et les aperçus par paramètres régionaux. Vérifiez en particulier les nombres limites : 0, 1, 2, 5, 11, 21 et 100.
let samples = [0, 1, 2, 5, 11, 21, 100]
for n in samples {
print(String(localized: "\(n) items"))
}Bonnes pratiques
Pour obtenir des pluriels corrects :
- Ne concaténez jamais et ne codez jamais en dur les suffixes
s. - Fournissez toutes les catégories nécessaires aux langues cibles.
- Faites dépendre le pluriel de l’entier interpolé, et non d’une chaîne précalculée.
- Préférez les catalogues de chaînes pour le nouveau code ; conservez
.stringsdictuniquement pour les cibles anciennes.
func cartSummary(_ items: Int) -> String {
String(localized: "Your cart has \(items) items",
comment: "Cart count; pluralized")
}
print(cartSummary(1))Vérification rapide
Rappelez-vous comment la sélection du pluriel doit être gérée.
Récapitulatif
Vous avez appris à gérer les pluriels en fonction des paramètres régionaux :
- Les catégories de pluriel Unicode sont zéro, un, deux, quelques-uns, beaucoup, autre ; chaque langue en utilise un sous-ensemble.
- Les catalogues de chaînes vous permettent d’ajouter des variantes de pluriel pour chaque clé ; le format ancien
.stringsdictfait de même au moyen d’un plist. - Les points d’appel restent simples : interpolez le nombre et l’infrastructure sélectionne la variante.
- Ne codez jamais en dur la logique des pluriels ; la catégorie un ne correspond pas seulement au nombre 1.
Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Pluriels et Stringsdict » est-elle gratuite ?
Oui — le texte complet de « Pluriels et Stringsdict » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pluriels et Stringsdict » ?
Gérez les règles de pluriel entre les langues. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Pluriels et Stringsdict » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Catalogues de chaînes et chaînes localisées
- Pluriels et Stringsdict
- Formatage selon les paramètres régionaux
- Écriture de droite à gauche et direction de la mise en page