Skip to main content

Κανόνες πληθυντικού CLDR: Επικυρώστε τις κατηγορίες πληθυντικού i18n μεταξύ γλωσσών

Τα αγγλικά έχουν 2 τύπους πληθυντικού. Τα αραβικά έχουν 6. Τα ρωσικά έχουν 4. Αν η υλοποίηση i18n σας χειρίζεται μόνο τις κατηγορίες 'one' και 'other', η εφαρμογή σας δεν λειτουργεί σωστά στις περισσότερες γλώσσες. Αυτός ο οδηγός εξηγεί τους κανόνες πληθυντικού CLDR και τον τρόπο επικύρωσής τους.

1

Τι είναι οι κανόνες πληθυντικού CLDR;

Το Unicode CLDR (Common Locale Data Repository) ορίζει έξι κατηγορίες πληθυντικού: zero, one, two, few, many και other. Κάθε γλώσσα χρησιμοποιεί ένα υποσύνολο αυτών των κατηγοριών με συγκεκριμένους αριθμητικούς κανόνες. Τα αγγλικά χρησιμοποιούν την one (ακριβώς 1) και την other (οτιδήποτε άλλο). Ωστόσο, οι περισσότερες γλώσσες είναι πιο σύνθετες — και οι λανθασμένοι τύποι πληθυντικού δημιουργούν γραμματικά προβληματικό κείμενο που κάνει την εφαρμογή σας να φαίνεται ερασιτεχνική.

The plural problem
// English has 2 plural forms: one, other
// "1 item" vs "2 items"

// But many languages have more:
// Arabic: 6 forms (zero, one, two, few, many, other)
// Polish: 3 forms (one, few, other)
// Japanese: 1 form (other)
// Czech: 3 forms (one, few, other)

// If you only provide "one" and "other",
// Arabic and Polish users see broken text.
Η κατηγορία 'other' είναι υποχρεωτική για κάθε γλώσσα. Χρησιμοποιείται ως εναλλακτική όταν δεν αντιστοιχεί καμία άλλη κατηγορία. Αν ορίσετε μόνο τις 'one' και 'other', καλύπτετε τα αγγλικά, αλλά η εφαρμογή σας δεν λειτουργεί σωστά σε πάνω από το 60% των γλωσσών του κόσμου.
2

Οι έξι κατηγορίες πληθυντικού

Το CLDR ορίζει ακριβώς έξι κατηγορίες πληθυντικού. Δεν χρησιμοποιούν όλες οι γλώσσες και τις έξι — τα αγγλικά χρησιμοποιούν μόνο δύο, ενώ τα αραβικά χρησιμοποιούν και τις έξι. Τα αρχεία i18n σας πρέπει να ορίζουν τις κατηγορίες που απαιτεί κάθε γλώσσα-στόχος, διαφορετικά η εφαρμογή μπορεί να καταρρεύσει ή οι χρήστες να δουν ανεπεξέργαστα κλειδιά ή γραμματικά λανθασμένο κείμενο.

CLDR plural categories
// CLDR defines 6 plural categories:
// zero  - 0 items (Arabic, Latvian)
// one   - 1 item (most languages)
// two   - 2 items (Arabic, Welsh)
// few   - 2-4 items (Polish, Czech, Russian)
// many  - 5-19 items (Arabic, Polish, Russian)
// other - everything else (required for ALL languages)

// Examples by language:
// English:  one, other                    (2 forms)
// French:   one, many, other              (3 forms)
// Arabic:   zero, one, two, few, many, other  (6 forms)
// Japanese: other                         (1 form)
// Polish:   one, few, many, other         (4 forms)
// Russian:  one, few, many, other         (4 forms)
3

Κατηγορίες πληθυντικού ανά γλώσσα

Γρήγορος οδηγός αναφοράς για τις κατηγορίες πληθυντικού που απαιτούν οι συνήθεις γλώσσες προορισμού. Χρησιμοποιήστε τον όταν ορίζετε τύπους πληθυντικού στα αρχεία μετάφρασής σας.

Common mistakes
// MISTAKE 1: Only providing "one" and "other"
// en.json
{
  "items_one": "{{count}} item",
  "items_other": "{{count}} items"
}
// This breaks for Arabic (missing zero, two, few, many)

// MISTAKE 2: Hardcoded plural logic
// WRONG:
const text = count === 1 ? "1 item" : `${count} items`
// This fails for languages where "1" isn't the only "one" form

// MISTAKE 3: Missing "other" category
// "other" is REQUIRED for every language
// Without it, some numbers show raw keys

// MISTAKE 4: Translating plural RULES instead of text
// The CLDR rules (one, few, many) are universal
// Only the TEXT after each rule should be translated
4

Αυτοματοποιημένη επικύρωση πληθυντικών

Το i18n-validate ελέγχει ότι κάθε κλειδί πληθυντικού στα αρχεία μετάφρασής σας ορίζει όλες τις κατηγορίες CLDR που απαιτεί η γλώσσα-στόχος. Αν το αρχείο για τα ρωσικά περιέχει μόνο τους τύπους 'one' και 'other', το εργαλείο επισημαίνει ως σφάλματα τις κατηγορίες 'few' και 'many' που λείπουν. Εκτελέστε το στο CI, για να εντοπίσετε προβλήματα πληθυντικού πριν φτάσουν στους χρήστες.

Terminal
# Validate plural forms match CLDR requirements
npx i18n-validate --check-plurals \
  --source locales/en.json \
  --targets 'locales/*.json'

# Output:
# locales/ar.json:
#   items: missing plural forms: zero, two, few, many
#   Expected: zero, one, two, few, many, other
#   Found: one, other
#
# locales/pl.json:
#   items: missing plural forms: few, many
#   Expected: one, few, many, other
#   Found: one, other

# Fix: Add all required forms for each language
# See https://unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
5

ICU MessageFormat για πληθυντικούς

Ο προτεινόμενος τρόπος ορισμού μεταφράσεων πληθυντικού είναι το ICU MessageFormat. Χρησιμοποιεί μία συμβολοσειρά με ενσωματωμένους κανόνες πληθυντικού: {count, plural, one {# item} other {# items}'}. Το ICU υποστηρίζεται από τα react-intl, vue-i18n, Angular Transloco, Flutter και τα περισσότερα σύγχρονα framework i18n.

ICU plural messages
// ICU MessageFormat handles plurals correctly
// It uses CLDR rules internally

// en.json
{
  "items": "{count, plural, one {# item} other {# items}}"
}

// ar.json
{
  "items": "{count, plural, zero {لا عناصر} one {عنصر واحد} two {عنصران} few {# عناصر} many {# عنصرًا} other {# عنصر}}"
}

// pl.json
{
  "items": "{count, plural, one {# element} few {# elementy} many {# elementów} other {# elementu}}"
}

// ICU also handles ordinals:
{
  "ranking": "{pos, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}"
}
Terminal
# Validate ICU message syntax
npx i18n-validate --check-icu \
  --source locales/en.json \
  --targets 'locales/*.json'

# Catches:
# - Missing plural categories for the target language
# - Syntax errors in ICU messages
# - Mismatched variable names
# - Missing "other" (always required)
Το σύμβολο # στο ICU MessageFormat αντικαθίσταται από το μορφοποιημένο πλήθος. Χρησιμοποιήστε το # αντί να ενσωματώσετε απευθείας το όνομα της μεταβλητής στους τύπους πληθυντικού. Για παράδειγμα, γράψτε '# item / # items' αντί να επαναλάβετε ρητά τη μεταβλητή του πλήθους.

Δοκιμάστε τώρα το i18n Agent

Αφήστε εδώ το αρχείο μετάφρασής σας

JSON, YAML, PO, XML, CSV, Markdown, Properties

ή κάντε κλικ για να επιλέξετε αρχείο

Γλώσσες-στόχοι

Δεν απαιτείται εγγραφήΆμεση εκτίμηση

Συχνές ερωτήσεις για τους κανόνες πληθυντικού CLDR