Waarom een meervoud per taal verschilt
De categorieën zero, one, two, few, many en other volgen de CLDR-regels van elke taal. In het Engels en het Nederlands betekent one alleen 1; in het Frans dekt het 0 en 1; Russisch en Pools voegen few en many toe; Arabisch gebruikt ze alle zes; Japans heeft er maar één, other. Een bericht met twee takken dat voor het Engels is geschreven, is dus onvolledig zodra je het vertaalt.
De tool leest deze regels in je browser (Intl.PluralRules): de getoonde categorieën en voorbeeldgetallen zijn die van de taal zelf, dus je hoeft geen tabel bij te houden.
De valkuil =1 met gen-l10n
Een tak =1 wordt de categorie one in de code die flutter gen-l10n genereert. In het Frans geldt die categorie ook voor nul: met count = 0 zou "1 article restant" verschijnen. Gebruik liever de categorie one met het getal in de tekst, of voeg een tak =0 toe: de tool biedt die aan als selectievakje. Details staan in de handleiding over ICU-meervoud en placeholders.
Het resultaat gebruiken
- Kopieer de regel
"key": "{count, plural, …}" van elke taal naar het bijbehorende bestand app_xx.arb.
- Voeg de
@key-metadata één keer toe, in het templatebestand.
- Voer
flutter gen-l10n uit: een ontbrekende tak other of een niet-gesloten accolade stopt de generatie, met de bestandsnaam.
Met de checker voor ontbrekende ARB-sleutels controleer je daarna of geen vertaling haar placeholder heeft laten vallen of hernoemd.
Beperkingen van de tool
De tool maakt de structuur, niet de vertaling: de tekst van elke vorm schrijf je zelf. Hij ondersteunt geen select-berichten of geneste meervoudsvormen, en verdubbelt geen apostroffen als je use-escaping in l10n.yaml hebt aangezet.