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.000000000 +0200 > +++ vdr-1.5.8-patched/i18n.c 2007-08-23 12:47:48.000000000 +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@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr