[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-09 12:55:54
Message-ID: li3g0s$gqd$1 () ger ! gmane ! org
[Download RAW message or body]

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.
>>>
>>> Because, like I was said 4 years ago, scripty pulls the plural formula
>>> from kdelibs4.po and scatters it to all files in l10n-kde4/[LANG]/, it
>>> is not possible to have some .po with 4 plural forms (for those
>>> packages using the ki18n framework) and others with 3 plural forms
>>> (for packages using QObject::tr).
>>>
>>> Now I have a two questions:
>>>  1. Is there any problem at all? For example, what happens if a .po
>>> file for a Qt-only KF5 module is converted back to .ts - will it
>>> truncate the 4th plural form?
>>>
>>>  2. In the case there is a problem, what options may there be to
>>> overcome
>>>  it?
>>>
>>> P.S.  I didn't read Qt sources much, therefore I might be wrong in my
>>> assumption that plural formulas for languages are hardcoded in Qt.
>>
>> 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.

Aurélien

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

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