RFC: i18n: strict translation call-to-catalog mapping
Chusslove Illich
caslav.ilic at gmx.net
Wed Apr 4 19:38:41 BST 2012
>> [: Chusslove Illich :]
>> For C++ code, I couldn't think of a better solution than that advised for
>> plain Gettext, and e.g. as formalized in Glib. It would amount to having:
>>
>> #define TRANSLATION_CATALOG "foolib"
>> #include "KLocalizedString"
>
> [: Albert Astals Cid :]
> This means you can't include KLocalizedString in public headers, no? Isn't
> it a bit too much strict?
I thought forward declarations would suffice, assuming KLocalizedString to
be used as function parameters at places. But now when I examined some
amount of public headers, it is also used as empty default value and even
i18n'd default value for such parameters. While these could be thrown out,
if a bit uglish (passing pointer default to null instead of reference), I've
also found one use of i18n call inside a template. I completely forgot about
templates.
So, how about this. With strict mapping, there would also be i18nd*() series
of calls which take as first argument the catalog name (like d*gettext()
calls); I didn't mention them earlier because they weren't important for the
proposal. But they would now be implicitly used as follows.
klocalizedstring.h would look like this:
#ifndef KLOCALIZEDSTRING_H
#define KLOCALIZEDSTRING_H
// All normal stuff.
#endif
// end of include guard
#ifdef TRANSLATION_CATALOG
#define i18n(...) i18nd(TRANSLATION_CATALOG, __VA_ARGS__)
#define i18nc(...) i18ndc(TRANSLATION_CATALOG, __VA_ARGS__)
// etc.
#else
#undef i18n
#undef i18nc
// etc.
#endif
// end of file
To point i18n calls to a specific catalog, the inclusion would be like
before:
#define TRANSLATION_CATALOG "foolib"
#include "KLocalizedString"
but if this was a public header, to unpollute the client code at the end of
file inclusion would be repeated like this:
#undef TRANSLATION_CATALOG
#include "KLocalizedString"
--
Chusslove Illich (Часлав Илић)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120404/9cf1611a/attachment.sig>
More information about the kde-core-devel
mailing list