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

List:       kde-i18n-doc
Subject:    Re: KOffice catalog/translation problems
From:       Albert Astals Cid <aacid () kde ! org>
Date:       2010-09-13 21:31:49
Message-ID: 201009132231.50240.aacid () kde ! org
[Download RAW message or body]

A Dilluns, 13 de setembre de 2010, Burkhard Lück va escriure:
> Hi,
> 
> I noticed two catalog/translation problems with KOffice:
> 
> 1) in branch 2.2
> In "What's This? Shift+F1" the key name "Shift" has the wrong message
> translation from the krita catalog in the start window of krita and the
> application windows of Krita, Karbon, KWord and KSpread.
> 
> Shown is this translation from krita.po:
> #. i18n: file: image/tests/kis_random_generator_demo.ui:105
> #. i18n: ectx: property (text), widget (QLabel, label_4)
> #: rc.cpp:2804
> msgid "Shift"
> 
> The correct translation should be pulled from kdeqt.po
> #: gui/kernel/qkeysequence.cpp:1157 gui/kernel/qkeysequence.cpp:1295
> msgid "Shift"
> 
> To solve that the string "Shift" in kis_random_generator_demo.ui needs a
> context.
> 
> The krita catalog is loaded for krita via the application name and for
> Karbon, KWord and KSpread via the plugin defaulttools
> krita/plugins/tools/defaulttools/default_tools.cc:44:
> K_EXPORT_PLUGIN(DefaultToolsFactory("krita"))
> 
> 
> 2) in trunk all koffice applications (and some other apps e.g. kpat) are
> completely untranslated here in locale x-test. Looks something similar like
> https://bugs.kde.org/show_bug.cgi?id=232918 is back?
> 
> Can anyone please check and probably confirm these issues?

Yeah, dfaure broke it.

I have a patch that fixes it, but touches too much kdecore vodoo i'm not sure 
it's correct. I'll pass it though him before commiting.

The patch is

Index: kernel/kglobal.cpp
===================================================================
--- kernel/kglobal.cpp  (revision 1174986)
+++ kernel/kglobal.cpp  (working copy)
@@ -73,7 +73,8 @@
         inline KGlobalPrivate()
             : stringDict(0),
             locale(0),
-            charsets(0)
+            charsets(0),
+            localeIsFromFakeComponent(false)
         {
             // the umask is read here before any threads are created to avoid 
race conditions
             mode_t tmp = 0;
@@ -96,6 +97,7 @@
         KStringDict *stringDict;
         KLocale *locale;
         KCharsets *charsets;
+        bool localeIsFromFakeComponent;
 
         /**
          * This component may be used in applications that doesn't have a
@@ -148,8 +150,11 @@
 KLocale *KGlobal::locale()
 {
     PRIVATE_DATA;
-    if (d->locale == 0) {
+    if (d->locale == 0 || (d->localeIsFromFakeComponent && d-
>mainComponent.isValid() && d->mainComponent.config())) {
+        delete d->locale;
+        d->locale = 0;
         d->locale = new KLocale(mainComponent().catalogName());
+        d->localeIsFromFakeComponent = !d->mainComponent.isValid();
         QTextCodec::setCodecForLocale(d->locale->codecForEncoding());
         mainComponent().aboutData()->translateInternalProgramName();
         QCoreApplication* coreApp = QCoreApplication::instance();

Albert

> 
> Thanks.

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

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