What makes pluralized strings recognized?

I want to ask you what makes pluralized strings recognized by Transifex. As I have some of them available for translate via Transifex UI for plurals (one, few, many, others and so on) and some others language strings are not recognized and displayed in RAW mode (plain text). And they are not searchable by filter pluralized:yes (for translators).

Based on these topics:

I guess you have rules for every single language specified here plus recognize standardized ICU message format.

Does Transifex’s plural UI only supports a subset of the ICU message format or there is no such limitation?

Hello @syl,

I am Antonis from the Transifex Customer Success team.

You are correct. We follow Unicode CLDR rules for pluralized strings for all our languages, and this controls which plural forms are required for each language so that your string can be pluralized. For example, if a language requires one, many, and other plural forms, but you only have one and many, you will receive an error for that string (missing plural form).

Rarely, a language or locale might be out of date compared with the latest CLDR rules. If you’re following the latest rules and you are getting errors on Transifex, you can let us know about the issue, and we will resolve it.

The other half of the equation is the file type you are using. The formats that support pluralized strings might have a specific structure, which Transifex recognizes when parsing your file to display the string as pluralized. You can find a full list of our supported file types here with their expected structure.

Please let me know if you have any questions, and I will be happy to help.

What is the difference if any for:

tx config
lang_map = zh-Hans: zh_Hans, zh-Hant: zh_Hant
vs
lang_map = sr@latin: sr_Latn, zh_CN: zh_Hans, zh_TW: zh_Hant, tr_TR: tr

language file
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
vs
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

What happens when Plural-Forms: is missing?

Hey @syl,

The logic behind the two language maps is the same: remote: local pairs separated by a comma, so both should work.

For the plural forms:

  • The first rule is a simple binary plural form (commonly used in English and many other languages)

    • 2 forms: singular (n=1) and plural (n≠1)
  • The second rule is much more complex, with 6 plural forms (commonly used in Arabic)

    • Form 0: n=0
    • Form 1: n=1
    • Form 2: n=2
    • Form 3: n%100 is 3-10
    • Form 4: n%100 is 11-99
    • Form 5: everything else

When Plural-Forms is missing most systems will fall back to the simplest plural form: just 1 form (nplurals=1). This means all numbers will be treated the same way, without any plural distinction. This can lead to incorrect pluralization in the interface. The best practice is to always specify the plural forms for proper localization.

Does this help?

Yes, your support is very helpful. Thank you.

Translator is able to use filter pluralized:yes to get pluralized strings. A lot of open source projects do not know about this feature. As I see this means strings were correctly recognized as pluralized and are available to translate via Transifex UI.

How to detect strings which are not going to be recognized as pluralized? In other topic I have asked for Transifex tools responses when organization pushes new strings. Any documentation how to make it automated?

As pluralized but not recognized strings usually contains plural keyword. I guess Transifex is not looking for anything which is not compatible with what is expected.

Hi @syl,

At the moment there is no way to identify strings that are not recognized as pluralized.

Regarding pushing new strings notifications, Project collaborators (translators, reviewers, language coordinators) can get notified about changes in the source strings in the project(s) they work on by enabling the Watch functionality

Those who enabled this feature are notified whenever one of the following events happens:

  • A new source file is added;

  • An existing source file is updated;

  • A source file is deleted.

Collaborators who didn’t enable the Watch feature will still be notified when a new resource is created in Transifex.

Collaborators instantly receive an in-app notification, and a grouped notification email is sent 2 hours after the first event occurs.

The “Watch” feature can be found in the upper right corner of the project’s Overview page.

Collaborators can check what projects they watch by clicking on their Organization > My profile > Notification settings > Watches.

More information about notifications can be found here.
I’m attendant to your comments,

Yes, I get such notification and I like them. Thank you for mentioning them.

For anyone using Python/Django this part of documentation may make your life easier.