Re: [vdr] translation context handling in vdr >= 1.5.7
Klaus Schmidinger wrote: > gettext() may or may not return the original string, so if no translation > is found, the context needs to be stripped. > > Please try this: sorry for the late response. gmx seemed to be blacklisted again ;) Works like a charm. BR, Christian ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] translation context handling in vdr >= 1.5.7
On 08/24/07 15:37, Anssi Hannula wrote: > ... > For the record, gettext also has context support: > http://www.gnu.org/software/gettext/manual/gettext.html#Contexts > > But if it needs too many changes, maybe it is not worth it. I thought about that shortly, but decided not to use it. There's not really too much to gain, and it would mean we'd have to touch quite a few places. Klaus ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] translation context handling in vdr >= 1.5.7
Klaus Schmidinger wrote: > On 08/23/07 13:48, Christian Wieninger wrote: >> Hi, >> >> I just noticed a small change in the context handling of translations >> since vdr-1.5.7. Till now it was possible to have e.g. >> >> const char AllowedChars[] = trNOOP("$ >> abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"); >> >> Note the 2 '$'. The first one only helps to have the second one in the >> translation and not to be interpreted as context. >> >> Previous implementations of I18nTranslate did only cut the context of >> the english version. So the translation could look like this in i18n.c >> or the po-files: >> >>// The allowed characters in strings: >>{ "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", >> " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", >> " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", >> ... >> >> The current implementation cuts the translations too which results in >> >> "[]|()*+?{}/:%@&" >> >> Is this intended? If so, one could add the dummy '$' also at the >> beginning of the translation, but has to handle this again for backwards >> compatibility. >> >> If it's not intended the following patch should give the previous behaviour: [...] > > gettext() may or may not return the original string, so if no translation > is found, the context needs to be stripped. [...] For the record, gettext also has context support: http://www.gnu.org/software/gettext/manual/gettext.html#Contexts But if it needs too many changes, maybe it is not worth it. -- Anssi Hannula ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] translation context handling in vdr >= 1.5.7
On 08/23/07 13:48, Christian Wieninger wrote: > Hi, > > I just noticed a small change in the context handling of translations > since vdr-1.5.7. Till now it was possible to have e.g. > > const char AllowedChars[] = trNOOP("$ > abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"); > > Note the 2 '$'. The first one only helps to have the second one in the > translation and not to be interpreted as context. > > Previous implementations of I18nTranslate did only cut the context of > the english version. So the translation could look like this in i18n.c > or the po-files: > >// The allowed characters in strings: >{ "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", > " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", > " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&", > ... > > The current implementation cuts the translations too which results in > > "[]|()*+?{}/:%@&" > > Is this intended? If so, one could add the dummy '$' also at the > beginning of the translation, but has to handle this again for backwards > compatibility. > > If it's not intended the following patch should give the previous behaviour: > > --- vdr-1.5.8/i18n.c 2007-08-19 16:10:46.0 +0200 > +++ vdr-1.5.8-patched/i18n.c 2007-08-23 12:47:48.0 +0200 > @@ -208,10 +208,10 @@ > t = dgettext(Plugin, s); >if (t == s) > t = gettext(s); > - s = t; > + return t; >} > - const char *p = strchr(s, '$'); > - return p ? p + 1 : s; > + else > +return SkipContext(s); > } > > const char *I18nLocale(int Language) gettext() may or may not return the original string, so if no translation is found, the context needs to be stripped. Please try this: --- i18n.c 2007/08/19 16:03:03 1.313 +++ i18n.c 2007/08/24 12:53:53 @@ -208,10 +208,10 @@ t = dgettext(Plugin, s); if (t == s) t = gettext(s); - s = t; + if (t != s) +return t; } - const char *p = strchr(s, '$'); - return p ? p + 1 : s; + return SkipContext(s); } const char *I18nLocale(int Language) Klaus ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr