Merge pull request #125 from Artoria2e5/patch-1

Translating: Describe pluralization (a gotcha)
This commit is contained in:
Eugen 2017-04-23 05:51:14 +02:00 committed by GitHub
commit 1307f343a4
1 changed files with 22 additions and 0 deletions

View File

@ -46,3 +46,25 @@ Once the pull request is accepted, wait for the code to be deployed on a Mastodo
## Updating the translation
Keep an eye on the original English files in `app/assets/javascripts/components/locales` and `config/locales`. When they are updated, pass on the changes to your language files. For new strings, add the new lines to the same position and translate them. Once youre finished with the updates, you can submit a new pull request.
## Appendix A. Plural handling
Different languages use different plural forms to be taken care of by Mastodon.
For JavaScipt (`.jsx`) translations, this is done in [react-intl](https://github.com/yahoo/react-intl), by doing:
```
Here {appleCount, plural, one {is an apple} other {are {appleCount} apples}}.
```
On the other hand, `.yml` files are processed by [rails-i18n](https://github.com/svenfuchs/rails-i18n). Items that look like this are pluralized fields:
```YML
eat_apple:
one: You ate an apple.
other: You ate %{count} apples.
```
In both examples you can see a `one` case and an `other` case described for the pluralized strings. The exact strings is chosen by how many a certain quantity is -- when there is exactly one of something, the sentence goes to the `one` case; otherwise it goes to the `other` case. This how plualization works for English (`en`) and a few other languages.
There are, however, many languages that don't operate in the one-other way. Polish as four plural forms, named `one`, `few`, `many`, and `other` respectively. Arabic has six. Chinese, Japanese, and Korean only have one form called `other`. If your language does not use one/other plural forms, be sure to check out the cardinal part of this [Unicode CIDR Plural Rules](http://www.unicode.org/cldr/charts/28/supplemental/language_plural_rules.html) chart. Also as a rule of thumb, always start translaing with the `other` case in the English files as they are better generalized than the `one` case.