@AntonKhorev commented on this pull request.


>  
   // '-' are replaced with '_' in 
https://github.com/eemeli/make-plural/tree/main/packages/plurals
   const pluralizer = plurals[locale.replace(/\W+/g, "_")] || 
plurals[locale.split("-")[0]];
   if (pluralizer) {
-    I18n.pluralization[locale] = (count) => [pluralizer(count), "other"];
+    OSM.i18n.pluralization.register(locale, I18n.useMakePlural({ pluralizer: 
locale }));

If you want to write this according to i18n-js docs, it should be:

```js
    OSM.i18n.pluralization.register(locale, I18n.useMakePlural({ pluralizer }));
```

However that's not the best you can do.

English has `one` / `other` forms. Some languages have `one` / `few` / `many` 
forms. Let's suppose that there's a string with `count` that's not yet 
translated into such language. First, `count` goes to the pluralizer and the 
pluralizer says *it has to be `many` form*. The string with `many` key is 
looked up and it's missing. Then a fallback to English happens, the string is 
looked up and it's missing again because English has no `many` form. The user 
gets to see an error message instead of any fallback:

![image](https://github.com/user-attachments/assets/54aff4c3-bfd6-4894-88df-7890cbb9d476)

That's why I wrote the pluralizer wrapper like this for i18n-js v3:

```js
    I18n.pluralization[locale] = (count) => [pluralizer(count), "other"];
```

It has a built-in fallback to `other` which is going to be present in English. 
It's not entirely correct because rules for `one` form can also be different 
and you sometimes get fallbacks to English `one` instead of `other`, but 
usually it's bearable.

The equivalent for i18n-js v4 looks like this:

```js
    OSM.i18n.pluralization.register(locale, (_, count) => [pluralizer(count), 
"other"]);
```

-- 
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/5811#pullrequestreview-2690650937
You are receiving this because you are subscribed to this thread.

Message ID: 
<openstreetmap/openstreetmap-website/pull/5811/review/2690650...@github.com>
_______________________________________________
rails-dev mailing list
rails-dev@openstreetmap.org
https://lists.openstreetmap.org/listinfo/rails-dev

Reply via email to