Problema com substituição de tradução pluralizada (contagem)

Olá :wave:

Notei que a última atualização usa a versão one das strings pluralizadas se a contagem for 1. O problema é que, até agora, as strings pluralizadas sempre usaram a versão other, mesmo que a contagem seja 1, e em /admin/customize/site_texts/ não há opção para encontrar a versão one da string, por exemplo, no idioma húngaro. No entanto, em húngaro, não há motivo para usar ambas as versões (one e other), pois serão praticamente as mesmas.

Repro:

  1. Altere o local, por exemplo, para húngaro.
  2. Vá para /admin/customize/site_texts/.
  3. Procure, por exemplo, js.topic_count_latest e altere o texto.
  4. Verifique no banner Ver novos ou atualizados tópicos.
  5. Ele usará o valor padrão quando houver apenas 1 atualização disponível porque a string que você editou é a versão other. Se houver mais tópicos novos ou atualizados, o texto será alterado para o que você adicionou anteriormente.

Obrigado :slightly_smiling_face:

3 curtidas

Olá @Don

Fiz este teste em chinês simplificado e não consegui reproduzir este problema :thinking:

Adicionei um caractere extra (destacado) à string original. E a alteração aconteceu quando a contagem era 1.

1 curtida

Ambas as linguagens têm apenas “other” na sua definição de plurais

Mas o húngaro ainda tem traduções separadas para “one”.

o que o chinês não tem

Eu me pergunto por que a versão separada “one” foi criada no Crowdin

2 curtidas

Sim, existem duas versões no local húngaro (uma e outra), mas acho que nunca usou a versão one até agora, pois ela também não está disponível na personalização de texto do administrador. Sempre recorreu à other.

1 curtida

Posso perguntar, o húngaro tem alguma forma plural? Se sim, talvez devêssemos adicionar a definição :one a plurals.rb

1 curtida

Encontrei a causa do problema. A I18n do Discourse depende da definição de plural de uma biblioteca externa:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-i18n/src/index.js#L7

Mas nesta biblioteca, podemos ver que o húngaro é definido como usando plurais do tipo a, que distinguem entre um e outros.

Eu não entendo húngaro, talvez alguém possa ajudar a apontar se a definição de plural deles está errada ou a nossa :slightly_smiling_face:

3 curtidas

Olá :waving_hand:

Obrigado por verificar. :heart:

Bem, em húngaro temos plural, mas nem sempre, o que o torna um pouco difícil. Mas deixe-me explicar alguns exemplos simples.

A maioria das palavras húngaras tem versão plural.
Se for incontável.
Ex:
Grupo → Grupos = Csoport → Csoportok
Tópico → Tópicos = Téma → Témák

Então, acho que a biblioteca externa está correta no sentido de que temos forma plural.

Mas não usamos plural se houver um número (contagem) antes das palavras.
Se for contável.
Ex:
1 grupo → 2 grupos = 1 csoport → 2 csoport
1 tópico → 2 tópicos = 1 téma → 2 téma


Se você verificar o arquivo de idioma húngaro, verá que os plurais são sempre os mesmos.

No entanto, vejo que há strings que não usam count na forma one.

Assim como:

Está tudo bem porque não precisamos da contagem neste caso, quando é apenas 1 tópico, é bastante óbvio. Mas a outra diferença aqui é apenas que o other aparece um número. O texto é o mesmo, não importa se há um número ou não.


Então, se você me perguntar, eu apenas removeria a forma one.

Mas se vier de uma biblioteca externa, que acho que está correta, porque o húngaro tem forma plural, mas não na maioria dos casos que o Discourse usa. Então, provavelmente adicionar a forma one para ter a capacidade de personalizá-la seria a solução mais fácil para evitar os problemas. Sim, é quase o mesmo, mas pelo menos podemos personalizá-lo no admin.

Não sei, é uma pergunta difícil. Como todos que administram um fórum húngaro e fizeram personalizações no admin, mudaram apenas a forma other. Porque sempre voltava para other de one. Então, se adicionarmos a forma one, os administradores terão que revisar novamente todas as strings plurais para modificar essa versão também para que seja a mesma que other.

Obrigado :slightly_smiling_face:

2 curtidas

Obrigado pela sua resposta detalhada! A correção do bug foi mesclada:

A correção adiciona a forma :one para húngaro. Tradutores futuros do Crowdin podem tentar remover %{count} para o singular para que ele pareça diferente da forma :other.

5 curtidas

Obrigado pela correção rápida. :heart:

Acho que está tudo bem, o %{count} segue bem a localidade em inglês. Que também não usa %{count} em algumas strings plurais na forma one. Agora a mudança é apenas que podemos editar a forma one no admin também, o que é suficiente, eu acho, neste caso. Acho que se funcionar corretamente, não há necessidade de outras mudanças. Atualizarei em breve para testar. :slightly_smiling_face:

Parece que tudo funciona excelentemente :slightly_smiling_face: Foi um ótimo passatempo mudar tudo isso, mas quase terminei. :smile: Obrigado novamente e obrigado também a @Moin por apontar isso. :heart:

4 curtidas

Este tópico foi automaticamente fechado 2 dias após a última resposta. Novas respostas não são mais permitidas.

Rastreando o problema mais amplo em Inconsistency in plural definition

2 curtidas