From kde-i18n-doc Thu Apr 10 15:53:45 2014 From: =?UTF-8?B?QXVyw6lsaWVuIEfDonRlYXU=?= Date: Thu, 10 Apr 2014 15:53:45 +0000 To: kde-i18n-doc Subject: Re: Different formulas for plurals in Qt and KDE Message-Id: X-MARC-Message: https://marc.info/?l=kde-i18n-doc&m=139714524927020 Sönke Dibbern wrote: > Am 09.04.2014, 14:55 Uhr, schrieb Aurélien Gâteau : > >> Sönke Dibbern wrote: >> >>> Am 08.04.2014, 10:49 Uhr, schrieb Aurélien Gâteau : >>> >>>> 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