From 2fff683110385047bd20fb5f0b68a008b48320dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chusslove=20Illich=20=28=D0=A7=D0=B0=D1=81=D0=BB=D0=B0?= =?UTF-8?q?=D0=B2=20=D0=98=D0=BB=D0=B8=D1=9B=29?= Date: Mon, 22 Jun 2015 15:12:58 +0200 Subject: Support translation domain in 'kde' translation system In applications translations can be looked up in the globally set translation domain, but in libraries it is necessary to link every i18n call to the library's own translation domain. A new code generation option TranslationDomain= is added to enable this. It has effect only if TranslationSystem=kde is set. Added unit tests to check generated translation calls. CHANGELOG: New code generation option TranslationDomain=, for use with TranslationSystem=kde; normally needed in libraries. REVIEW: 123872 --- src/kconfig_compiler/kconfig_compiler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/kconfig_compiler/kconfig_compiler.cpp') diff --git a/src/kconfig_compiler/kconfig_compiler.cpp b/src/kconfig_compiler/kconfig_compiler.cpp index 7160bb57..246cc92a 100644 --- a/src/kconfig_compiler/kconfig_compiler.cpp +++ b/src/kconfig_compiler/kconfig_compiler.cpp @@ -100,6 +100,7 @@ public: generateProperties = codegenConfig.value("GenerateProperties", false).toBool(); if (trString == "kde") { translationSystem = KdeTranslation; + translationDomain = codegenConfig.value("TranslationDomain").toString(); } else { if (!trString.isEmpty() && trString != "qt") { cerr << "Unknown translation system, falling back to Qt tr()" << endl; @@ -138,6 +139,7 @@ public: bool useEnumTypes; bool itemAccessors; TranslationSystem translationSystem; + QString translationDomain; bool generateProperties; }; @@ -1306,7 +1308,11 @@ QString translatedString(const CfgConfig &cfg, const QString &string, const QStr break; case CfgConfig::KdeTranslation: - if (!context.isEmpty()) { + if (!cfg.translationDomain.isEmpty() && !context.isEmpty()) { + result += "i18ndc(" + quoteString(cfg.translationDomain) + ", " + quoteString(context) + ", "; + } else if (!cfg.translationDomain.isEmpty()) { + result += "i18nd(" + quoteString(cfg.translationDomain) + ", "; + } else if (!context.isEmpty()) { result += "i18nc(" + quoteString(context) + ", "; } else { result += "i18n("; -- cgit v1.2.1