[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