[prev in list] [next in list] [prev in thread] [next in thread]
List: kwrite-devel
Subject: Re: Translating External Tools
From: Dominik Haumann <dhaumann () kde ! org>
Date: 2019-10-07 20:59:05
Message-ID: CALi_srC1TDJdx719yFiDnek0WOJAm0KFev05qoeis9uh+Vaw9w () mail ! gmail ! com
[Download RAW message or body]
Fixed:
https://invent.kde.org/kde/kate/commit/d10af90957bfce5b7c8b55bb43faf0a7584b9354
Thanks!
Dominik
On Mon, Oct 7, 2019 at 10:36 PM Albert Astals Cid <aacid@kde.org> wrote:
> El dilluns, 7 d'octubre de 2019, a les 22:27:20 CEST, Dominik Haumann va
> escriure:
> > Ok, thanks. Both fixed.
> >
> > Yet, I have another one:
> > 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.
> >
> > 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.
> >
> > I found on https://api.kde.org/frameworks/ki18n/html/prg_guide.html that
> > "an empty string should never be wrapped with a basic i18n call (no
> i18n("")),
> > because in translation catalog the message with empty text has a special
> > meaning, and is not intended for client use. The behavior of i18n("") is
> > undefined, and there will be some warnings in debug mode."
> >
> > 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?
>
> Yes.
>
> Cheers,
> Albert
>
> >
> > Thanks & best regards
> > Dominik
> >
> >
> >
> >
> >
> >
> >
> > On Mon, Sep 23, 2019 at 11:52 PM Albert Astals Cid <aacid@kde.org>
> wrote:
> >
> > > El dilluns, 23 de setembre de 2019, a les 16:12:45 CEST, Dominik
> Haumann
> > > va escriure:
> > > > Hi everyone,
> > > >
> > > > I have some translation-related questions for the external tools
> plugin.
> > > > Currently some things are certainly wrong.
> > > >
> > > > 1. Messages.sh
> > > > We have default tools in a file compiled into Kate, see:
> > > >
> > >
> https://invent.kde.org/kde/kate/blob/master/addons/externaltools/defaultexternaltoolsrc
> > > > In short, this is a ini-like file. Entries that need translation are:
> > > > name=...
> > > > category=...
> > > > The rest must not be translated. Still, I am pretty sure we are
> missing a
> > > > line or so in the Message.sh extraction script:
> > > >
> > >
> https://invent.kde.org/kde/kate/blob/master/addons/externaltools/Messages.sh
> > > >
> > > > Can one of you clarify how to do this properly?
> > >
> > > You're using a custom file format, so you need a custom solution.
> > >
> > > Something with sed/grep/whatever that extracts from that customrc file
> and
> > > appends to rc.cpp
> > >
> > > Also you'll need to call i18n() on whatever thing you read from that rc
> > > file so it actually gets translated.
> > >
> > > >
> > > > 2. ui.rc
> > > > The xmlgui file is located here:
> > > >
> https://invent.kde.org/kde/kate/blob/master/addons/externaltools/ui.rc
> > > > The contents to be discussed is:
> > > > <gui name="externaltools" library="externaltoolsplugin" version="1">
> > > >
> > > > In other plugins, I can also find an attribute "translationDomain",
> e.g.:
> > > > https://invent.kde.org/kde/kate/blob/master/addons/lspclient/ui.rc
> > > >
> > > > My CMakeLists.txt file located at
> > > >
> > >
> https://invent.kde.org/kde/kate/blob/master/addons/externaltools/CMakeLists.txt
> > > > contains this:
> > > > target_compile_definitions(externaltoolsplugin PRIVATE
> > > > TRANSLATION_DOMAIN="kateexternaltoolsplugin")
> > > >
> > > > Am I missing the translationDomain in the ui.rc file?
> > >
> > > 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?
> > >
> > > Cheers,
> > > Albert
> > >
> > > >
> > > > Any hints are welcome.
> > > >
> > > > Best regards
> > > > Dominik
> > > >
> > >
> > >
> > >
> > >
> > >
> >
>
>
>
>
>
[Attachment #3 (text/html)]
<div dir="ltr"><div>Fixed: <a \
href="https://invent.kde.org/kde/kate/commit/d10af90957bfce5b7c8b55bb43faf0a7584b9354" \
>https://invent.kde.org/kde/kate/commit/d10af90957bfce5b7c8b55bb43faf0a7584b9354</a></div><div><br></div><div>Thanks!</div><div>Dominik<br></div></div><br><div \
> class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 7, 2019 at 10:36 \
> 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, 7 \
> d'octubre de 2019, a les 22:27:20 CEST, Dominik Haumann va escriure:<br>
> Ok, thanks. Both fixed.<br>
> <br>
> Yet, I have another one:<br>
> I use i18nc("External tools name", name) and i18nc("External \
tools<br> > category", category) to translate external tools. This works for \
external<br> > tools that are shipped by default.<br>
> <br>
> However, if the user creates a new tool, the name and category initially is<br>
> empty: i18n("") then returns "(I18N_EMPTY_MESSAGE)" as user \
visible string,<br> > which is not what I want.<br>
> <br>
> I found on <a href="https://api.kde.org/frameworks/ki18n/html/prg_guide.html" \
rel="noreferrer" target="_blank">https://api.kde.org/frameworks/ki18n/html/prg_guide.html</a> \
that<br> > "an empty string should never be wrapped with a basic i18n call \
(no i18n("")),<br> > because in translation catalog the message with \
empty text has a special<br> > meaning, and is not intended for client use. The \
behavior of i18n("") is<br> > undefined, and there will be some warnings \
in debug mode."<br> > <br>
> So what's the proper way of using i18n() if the string possibly is \
empty?<br> > Create a helper function "QString myI18n(const QString \
&)" that only calls<br> > i18n() if the passed string is non-empty?<br>
<br>
Yes.<br>
<br>
Cheers,<br>
Albert<br>
<br>
> <br>
> Thanks & best regards<br>
> Dominik<br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> On Mon, Sep 23, 2019 at 11:52 PM Albert Astals Cid <<a \
href="mailto:aacid@kde.org" target="_blank">aacid@kde.org</a>> wrote:<br> > \
<br> > > El dilluns, 23 de setembre de 2019, a les 16:12:45 CEST, Dominik \
Haumann<br> > > 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>
> > ><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>
> > ><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<br> > > appends to rc.cpp<br>
> ><br>
> > Also you'll need to call i18n() on whatever thing you read from that \
rc<br> > > 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>
> > ><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)<br> > > 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>
> ><br>
> <br>
<br>
<br>
<br>
<br>
</blockquote></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic