VDR-core's texts in plugin's .pot files

Message ID 46CEDEBE.1060800@cadsoft.de
State New
Headers

Commit Message

Klaus Schmidinger Aug. 24, 2007, 1:35 p.m. UTC
  On 08/19/07 14:58, Matthias Becker wrote:
> Hi,
> 
> plugins can re-use VDR-core translations. With the old "i18n.c" method
> plugin authors just did not provide a plugin specific translation for
> these texts.
> With the new translation method identifying these text got harder for
> plugin translators. xgettext puts all texts into the .pot file - also
> the texts for which the VDR-core translation should be used. A
> translator now cannot see which texts he has to translate and which
> not.
> 
> Can this be improved?
> 
> One way of doing this would be to introduce a new macro similar to
> trNOOP( ). A plugin author would then tag the vdr-core texts with this
> new macro and xgettext would ignore these texts.
> 
> What do you think?

You're certainly right.

How about this:


Klaus
  

Comments

Klaus Schmidinger Aug. 24, 2007, 2 p.m. UTC | #1
On 08/24/07 15:35, Klaus Schmidinger wrote:
> On 08/19/07 14:58, Matthias Becker wrote:
>> ...
>> One way of doing this would be to introduce a new macro similar to
>> trNOOP( ). A plugin author would then tag the vdr-core texts with this
>> new macro and xgettext would ignore these texts.
>>
>> What do you think?
> 
> You're certainly right.
> 
> How about this:
> 
> --- i18n.h      2007/08/19 14:07:17     1.23
> +++ i18n.h      2007/08/24 13:33:50
> @@ -80,6 +80,7 @@
> 
>  #ifdef PLUGIN_NAME_I18N
>  #define tr(s)  I18nTranslate(s, "vdr-" PLUGIN_NAME_I18N)
> +#define trVDR(s) I18nTranslate(s)  // to use a text that's in the VDR core's translation file
>  #else
>  #define tr(s)  I18nTranslate(s)
>  #endif

One more thing: this also reduces I18nTranslate() to


const char *I18nTranslate(const char *s, const char *Plugin)
{
  if (s && CurrentLanguage) {
     const char *t = Plugin ? dgettext(Plugin, s) : gettext(s);
     if (t != s)
        return t;
     }
  return SkipContext(s);
}



Klaus
  
Klaus Schmidinger Aug. 24, 2007, 2:03 p.m. UTC | #2
On 08/24/07 16:00, Klaus Schmidinger wrote:
> ...
> One more thing: this also reduces I18nTranslate() to
> 
> 
> const char *I18nTranslate(const char *s, const char *Plugin)
> {
>   if (s && CurrentLanguage) {
>      const char *t = Plugin ? dgettext(Plugin, s) : gettext(s);
>      if (t != s)
>         return t;
>      }
>   return SkipContext(s);
> }

Well, actually


const char *I18nTranslate(const char *s, const char *Plugin)
{
  if (!s)
     return s;
  if (CurrentLanguage) {
     const char *t = Plugin ? dgettext(Plugin, s) : gettext(s);
     if (t != s)
        return t;
     }
  return SkipContext(s);
}


Guess I was a little too enthusiastic when minimizing this code ,-)

Klaus
  

Patch

--- i18n.h      2007/08/19 14:07:17     1.23
+++ i18n.h      2007/08/24 13:33:50
@@ -80,6 +80,7 @@ 

 #ifdef PLUGIN_NAME_I18N
 #define tr(s)  I18nTranslate(s, "vdr-" PLUGIN_NAME_I18N)
+#define trVDR(s) I18nTranslate(s)  // to use a text that's in the VDR core's translation file
 #else
 #define tr(s)  I18nTranslate(s)
 #endif