Re: [vdr] translation context handling in vdr >= 1.5.7

2007-08-27 Thread Christian Wieninger
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

2007-08-24 Thread Klaus Schmidinger
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

2007-08-24 Thread Anssi Hannula
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

2007-08-24 Thread Klaus Schmidinger
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