<div dir="ltr"><div>Ok, thanks. Both fixed.</div><div><br></div><div>Yet, I have another one:</div><div>I use i18nc("External tools name", name) and i18nc("External tools category", category) to translate external tools. This works for external tools that are shipped by default.</div><div><br></div><div>However, if the user creates a new tool, the name and category initially is empty: i18n("") then returns "(I18N_EMPTY_MESSAGE)" as user visible string, which is not what I want.</div><div><br></div><div>I found on <a href="https://api.kde.org/frameworks/ki18n/html/prg_guide.html">https://api.kde.org/frameworks/ki18n/html/prg_guide.html</a> that "an empty string should never be wrapped with a basic <code>i18n</code> call (no <code>i18n("")</code>),
 because in translation catalog the message with empty text has a 
special meaning, and is not intended for client use. The behavior of <code>i18n("")</code> is undefined, and there will be some warnings in debug mode."</div><div><br></div><div>So what's the proper way of using i18n() if the string possibly is empty? Create a helper function "QString myI18n(const QString &)" that only calls i18n() if the passed string is non-empty?</div><div><br></div><div>Thanks & best regards</div><div>Dominik</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 23, 2019 at 11:52 PM Albert Astals Cid <<a href="mailto:aacid@kde.org">aacid@kde.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">El dilluns, 23 de setembre de 2019, a les 16:12:45 CEST, Dominik Haumann va escriure:<br>
> Hi everyone,<br>
> <br>
> I have some translation-related questions for the external tools plugin.<br>
> Currently some things are certainly wrong.<br>
> <br>
> 1. Messages.sh<br>
> We have default tools in a file compiled into Kate, see:<br>
> <a href="https://invent.kde.org/kde/kate/blob/master/addons/externaltools/defaultexternaltoolsrc" rel="noreferrer" target="_blank">https://invent.kde.org/kde/kate/blob/master/addons/externaltools/defaultexternaltoolsrc</a><br>
> In short, this is a ini-like file. Entries that need translation are:<br>
> name=...<br>
> category=...<br>
> The rest must not be translated. Still, I am pretty sure we are missing a<br>
> line or so in the Message.sh extraction script:<br>
> <a href="https://invent.kde.org/kde/kate/blob/master/addons/externaltools/Messages.sh" rel="noreferrer" target="_blank">https://invent.kde.org/kde/kate/blob/master/addons/externaltools/Messages.sh</a><br>
> <br>
> Can one of you clarify how to do this properly?<br>
<br>
You're using a custom file format, so you need a custom solution.<br>
<br>
Something with sed/grep/whatever that extracts from that customrc file and appends to rc.cpp<br>
<br>
Also you'll need to call i18n() on whatever thing you read from that rc file so it actually gets translated.<br>
<br>
> <br>
> 2. ui.rc<br>
> The xmlgui file is located here:<br>
> <a href="https://invent.kde.org/kde/kate/blob/master/addons/externaltools/ui.rc" rel="noreferrer" target="_blank">https://invent.kde.org/kde/kate/blob/master/addons/externaltools/ui.rc</a><br>
> The contents to be discussed is:<br>
> <gui name="externaltools" library="externaltoolsplugin" version="1"><br>
> <br>
> In other plugins, I can also find an attribute "translationDomain", e.g.:<br>
> <a href="https://invent.kde.org/kde/kate/blob/master/addons/lspclient/ui.rc" rel="noreferrer" target="_blank">https://invent.kde.org/kde/kate/blob/master/addons/lspclient/ui.rc</a><br>
> <br>
> My CMakeLists.txt file located at<br>
> <a href="https://invent.kde.org/kde/kate/blob/master/addons/externaltools/CMakeLists.txt" rel="noreferrer" target="_blank">https://invent.kde.org/kde/kate/blob/master/addons/externaltools/CMakeLists.txt</a><br>
> contains this:<br>
> target_compile_definitions(externaltoolsplugin PRIVATE<br>
> TRANSLATION_DOMAIN="kateexternaltoolsplugin")<br>
> <br>
> Am I missing the translationDomain in the ui.rc file?<br>
<br>
Yes, how do you expect the kpart code to know from which domain(aka file) to load the translations when presented with that xml file otherwise?<br>
<br>
Cheers,<br>
  Albert<br>
<br>
> <br>
> Any hints are welcome.<br>
> <br>
> Best regards<br>
> Dominik<br>
> <br>
<br>
<br>
<br>
<br>
</blockquote></div>