[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-i18n-doc
Subject:    Re: Different formulas for plurals in Qt and KDE
From:       Aurélien Gâteau <agateau () kde ! org>
Date:       2014-04-10 15:53:45
Message-ID: li6eqa$mqe$1 () ger ! gmane ! org
[Download RAW message or body]

Sönke Dibbern wrote:

> Am 09.04.2014, 14:55 Uhr, schrieb Aurélien Gâteau <agateau@kde.org>:
> 
>> Sönke Dibbern wrote:
>>
>>> Am 08.04.2014, 10:49 Uhr, schrieb Aurélien Gâteau <agateau@kde.org>:
>>>
>>>> On Mon, Apr 7, 2014, at 18:07, Alexander Potashev wrote:
>>>>> Good night!
>>>>>
>>>>> More on plurals and KF5...
>>>>>
>>>>> As you may know, Serbian, Ukrainian and Russian translations of KDE
>>>>> software are using a new plural formula with 4 plural forms, while Qt
>>>>> knows only about the traditional plural formula and only 3 plural
>>>>> forms.
>>>>>
>>>>> [...]
>>>>
>>>> I am still not familiar enough with scripty to have a definitive
>>>> answer,
>>>> but this could be a problem indeed. Plural formulas are indeed
>>>> hardcoded
>>>> in Qt (just checked, they are in the qttools repository, in
>>>> src/linguist/shared/numerus.cpp)
>>>>
>>>> Aurélien
>>>
>>> Moin tosamen,
>>>
>>> what does the latter mean for smaller languages not taken into account
>>> in
>>> numerus.cpp, e.g. Low Saxon (nds), Upper and Lower Sorbian (hsb and nsb,
>>> resp.) or North Frisian (frr), just to mention a few? Will it be
>>> possible
>>> to have message catalogs for these at all?
>>
>> I just did some testing.
>>
>> 1. I created a nds .po from a .pot with:
>>    msginit -l nds -i kbookmarks5.pot -o kbookmarks5.po
>>
>> 2. Wrote some dummy strings as translations.
>>
>> 3. Converted the .po into a .ts (Qt translation source format):
>>    lconvert -i kbookmarks5.po -o kbookmarks5.ts -target-language nds
>>
>>    This created a .ts whose root element has an attribute
>> 'language="nds"'
>>
>> 4. Compiled this .ts in a .qm (Qt translation binary format):
>>    lrelease kbookmarks5.ts
>>
>>    This created a kbookmarks5.qm
>>
>> 5. Installed kbookmarks5.qm in share/locale/nds/LC_MESSAGES
>>
>> 6. Tried test program kbookmarkdialogtest and... no matter how many
>> environment variables I set, I was not able to get it to load my .qm.
>> Sad.
>>
>> If I hardcode the path to the .qm, it gets loaded and translations
>> appear,
>> though I don't expect proper plural support. After much reading of Qt
>> source
>> code, I found out locales are defined based on http://cldr.unicode.org/
>> so I
>> think the best thing to do is to submit the missing languages to cldr and
>> file a Qt bug to ask for a refresh. As of now, Qt is based on cldr v23.1.
>> v25 has been released in march but still does not contain nds.
> 
> Moin Aurélien,
> 
> thank you for digging into this. I feared something like this would happen
> when I read 'hardcoded into Qt'. I fear that KDE will lose some languages
> (or at least correctly pluralised tier 1 modules in these languages, if I
> understand matters correctly*) due to this,

We could try to bypass QLocale to load the .qm manually by reading 
environment variables ourselves, but that would still not give you proper 
plural support.

> because I don't think that
> every small language team will have the resources to push their stuff into
> the CLDR database. Hope I'm proven wrong.

I learned about CLDR yesterday, so I have no idea how hard it is to get a 
new language in it, but seeing as it is used by many companies or 
organizations it looks to me like the time put into adding your language to 
it would pay off a lot eventually.

> *) Tier 2,3,x stuff could use "normal" KDE i18n infrastructure, is that
> right?

Indeed. A few tier 2 and 3 frameworks do not use ki18n right now (kauth, 
kbookmarks, kcompletion, kcrash, kdesignerplugin, kdnssd, kjobwidgets, 
knotifications). Now that ki18n is tier 1, maybe it is a good idea to bring 
those frameworks back to ki18n?

Aurélien

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic