Por que o plural muda de um idioma para outro
As categorias zero, one, two, few, many e other seguem as regras CLDR de cada idioma. Em inglês, one significa só 1; em português do Brasil e em francês, cobre 0 e 1; russo e polonês acrescentam few e many; o árabe usa as seis; o japonês tem uma só, other. Uma mensagem de dois ramos escrita para o inglês fica, portanto, incompleta assim que você a traduz.
A ferramenta lê essas regras no seu navegador (Intl.PluralRules): as categorias e os números de exemplo exibidos são os do próprio idioma, sem tabela para manter.
A armadilha do =1 com o gen-l10n
Um ramo =1 vira a categoria one no código gerado pelo flutter gen-l10n. Em português, essa categoria também se aplica ao zero: com count = 0, apareceria "1 item restante". Prefira a categoria one com o número no texto, ou adicione um ramo =0: a ferramenta oferece essa opção em uma caixa de seleção. Detalhes no guia sobre plurais e placeholders ICU.
Como usar o resultado
- Copie a linha
"key": "{count, plural, …}" de cada idioma no arquivo app_xx.arb correspondente.
- Adicione os metadados
@key uma única vez, no arquivo template.
- Rode o
flutter gen-l10n: um ramo other ausente ou uma chave não fechada interrompe a geração com o nome do arquivo.
Para depois conferir se nenhuma tradução perdeu ou renomeou o placeholder, use o verificador de chaves ausentes em ARB.
Limitações da ferramenta
A ferramenta gera a estrutura, não a tradução: você escreve o texto de cada forma. Ela não trata mensagens select nem plurais aninhados, e não duplica os apóstrofos se você ativou use-escaping no l10n.yaml.