mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Replacing blanks in language codes with underlines
This commit is contained in:
parent
29c0f9e1e0
commit
a9d6bb256d
6
HISTORY
6
HISTORY
@ -4931,13 +4931,15 @@ Video Disk Recorder Revision History
|
|||||||
|
|
||||||
- Official release.
|
- Official release.
|
||||||
|
|
||||||
2006-10-07: Version 1.4.3-1
|
2006-10-08: Version 1.4.3-1
|
||||||
|
|
||||||
- The function cThread::Cancel() now only sets 'running' to false and does not
|
- The function cThread::Cancel() now only sets 'running' to false and does not
|
||||||
actually kill the thread if the special value -1 is given (suggested by Udo Richter).
|
actually kill the thread if the special value -1 is given (suggested by Udo Richter).
|
||||||
- Changed the I18nNormalizeLanguageCode() check to also allow blanks (and all other
|
- Changed the I18nNormalizeLanguageCode() check to also allow blanks (and all other
|
||||||
printable characters) in the language codes (thanks to Boguslaw Juza for reporting
|
printable characters) in the language codes (thanks to Boguslaw Juza for reporting
|
||||||
that there are stations that use blanks in these codes).
|
that there are stations that use blanks in these codes). Blanks are replaced with
|
||||||
|
underlines, so that all parts of VDR that rely on language codes to be one word
|
||||||
|
(without blanks) work as expected.
|
||||||
- Now clearing an event's Title, ShortText and Description if there is no
|
- Now clearing an event's Title, ShortText and Description if there is no
|
||||||
ShortEventDescriptor or ExtendedEventDescriptor, respectively (thanks to Boguslaw
|
ShortEventDescriptor or ExtendedEventDescriptor, respectively (thanks to Boguslaw
|
||||||
Juza for reporting that events without an ExtendedEventDescriptor may get
|
Juza for reporting that events without an ExtendedEventDescriptor may get
|
||||||
|
33
i18n.c
33
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.283 2006/10/07 12:18:10 kls Exp $
|
* $Id: i18n.c 1.284 2006/10/08 08:50:30 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -6243,12 +6243,31 @@ int I18nLanguageIndex(const char *Code)
|
|||||||
|
|
||||||
const char *I18nNormalizeLanguageCode(const char *Code)
|
const char *I18nNormalizeLanguageCode(const char *Code)
|
||||||
{
|
{
|
||||||
if (Code[0] && !isprint(Code[0]) || Code[1] && !isprint(Code[1]) || Code[2] && !isprint(Code[2])) {
|
for (int i = 0; i < 3; i++) {
|
||||||
// ISO 639 language codes are defined as alphabetical characters, but digits are apparently
|
if (Code[i]) {
|
||||||
// also used, for instance for "2ch". There are even channels that use blank characters.
|
// ETSI EN 300 468 defines language codes as consisting of three letters
|
||||||
//dsyslog("invalid language code: '%s'", Code);
|
// according to ISO 639-2. This means that they are supposed to always consist
|
||||||
return "???";
|
// of exactly three letters in the range a-z - no digits, UTF-8 or other
|
||||||
}
|
// funny characters. However, some broadcasters apparently don't have a
|
||||||
|
// copy of the DVB standard (or they do, but are perhaps unable to read it),
|
||||||
|
// so they put all sorts of non-standard stuff into the language codes,
|
||||||
|
// like nonsense as "2ch" or "A 1" (yes, they even go as far as using
|
||||||
|
// blanks!). Such things should go into the description of the EPG event's
|
||||||
|
// ComponentDescriptor.
|
||||||
|
// So, as a workaround for this broadcaster stupidity, let's ignore
|
||||||
|
// language codes with unprintable characters...
|
||||||
|
if (!isprint(Code[i])) {
|
||||||
|
//dsyslog("invalid language code: '%s'", Code);
|
||||||
|
return "???";
|
||||||
|
}
|
||||||
|
// ...and replace blanks with underlines (ok, this breaks the 'const'
|
||||||
|
// of the Code parameter - but hey, it's them who started this):
|
||||||
|
if (Code[i] == ' ')
|
||||||
|
*((char *)&Code[i]) = '_';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
int n = I18nLanguageIndex(Code);
|
int n = I18nLanguageIndex(Code);
|
||||||
return n >= 0 ? I18nLanguageCode(n) : Code;
|
return n >= 0 ? I18nLanguageCode(n) : Code;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user