summaryrefslogtreecommitdiff
path: root/i18n.h
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2007-08-12 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2007-08-12 18:00:00 +0200
commit4c65b525dc1e3c62336b223d200a46fb30dc7e52 (patch)
tree4a6b2381dd6a50792d90b6a3bd3635260ba0737b /i18n.h
parent8849308cf9ad1e85ed1790aa832806ce7f74e565 (diff)
downloadvdr-patch-lnbsharing-4c65b525dc1e3c62336b223d200a46fb30dc7e52.tar.gz
vdr-patch-lnbsharing-4c65b525dc1e3c62336b223d200a46fb30dc7e52.tar.bz2
Version 1.5.7vdr-1.5.7
- All logging now goes to LOG_ERR, because some systems split error, info and debug messages into separate files, which repeatedly caused extra efforts to find out when incomplete log excerpts were attached to problem reports in the past. - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Fixed a problem with characters >0x7F in the modified version of skipspace() (thanks to Marco Schlüßler). - Fixed a bug I introduced when simplifying the original patch for detecting Premiere NVOD channel links (crash reported by Malte Schröder). - Internationalization is now done with 'gettext' (following a suggestion by Lucian Muresan). Plugin authors may want to use the Perl script 'i18n-to-gettext.pl' to convert their internationalized texts to the gettext format (see the instructions inside that script file). The function cPlugin::RegisterI18n() is still present for compatibility, but doesn't have any more functionality. So plugins that don't convert their texts to the gettext format will only present English texts. See PLUGINS.html, section "Internationalization", for instructions on how to make strings in arrays translatable. See README.i18n for information on how to create new or maintain existing translations. - The three letter language codes and their aliases are stored in i18n.c, and each translation file only contains one of them to link that language name to the code. - The 'newplugin' script has been extended to generate the Makefile section for i18n support. - The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not set to a particular locale that is found in VDR's locale directory, the locale as defined in the system environment is used by default. - The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated, so that plugins can actually use all the strings in the list, not just the one pointed to by Index (thanks to Alexander Rieger). - Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to Alexander Rieger). - Added the "...or (at your option) any later version" phrase to the license information of all plugins, and also the 'newplugin' script (suggested by Ville Skyttä). Plugin authors may want to consider doing the same. - Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville Skyttä). - cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to avoid a crash with files that only contain "/* XPM */" (suggested by Andreas Mair). - Added a debug error message to cReceiver::~cReceiver() in case it is still attached to a device (thanks to Reinhard Nissl).
Diffstat (limited to 'i18n.h')
-rw-r--r--i18n.h51
1 files changed, 43 insertions, 8 deletions
diff --git a/i18n.h b/i18n.h
index 7f9f065..46c6a5e 100644
--- a/i18n.h
+++ b/i18n.h
@@ -4,25 +4,58 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.h 1.20 2007/05/28 11:43:14 kls Exp $
+ * $Id: i18n.h 1.21 2007/08/10 13:53:57 kls Exp $
*/
#ifndef __I18N_H
#define __I18N_H
#include <stdio.h>
+#include "tools.h"
-const int I18nNumLanguages = 22;
+typedef const char *tI18nPhrase[22]; ///< obsolete - switch to 'gettext'!
-typedef const char *tI18nPhrase[I18nNumLanguages];
-
-void I18nRegister(const tI18nPhrase * const Phrases, const char *Plugin);
+#define I18N_DEFAULT_LOCALE "en_US"
+#define I18N_MAX_LOCALE_LEN 16 // for buffers that hold en_US etc.
+#define I18N_MAX_LANGUAGES 256 // for buffers that hold all available languages
+void I18nInitialize(void);
+ ///< Detects all available locales and loads the language names and codes.
+void I18nRegister(const char *Plugin);
+ ///< Registers the named plugin, so that it can use internationalized texts.
+void I18nSetLocale(const char *Locale);
+ ///< Sets the current locale to Locale. The default locale is "en_US".
+ ///< If no such locale has been found in the call to I18nInitialize(),
+ ///< nothing happens.
+int I18nCurrentLanguage(void);
+ ///< Returns the index of the current language. This number stays the
+ ///< same for any given language while the program is running, but may
+ ///< be different when the program is run again (for instance because
+ ///< a locale has been added or removed). The default locale ("en_US")
+ ///< always has a zero index.
+void I18nSetLanguage(int Language);
+ ///< Sets the current language index to Language. If Language is outside
+ ///< the range of available languages, nothing happens.
+const cStringList *I18nLanguages(void);
+ ///< Returns the list of available languages. Values returned by
+ ///< I18nCurrentLanguage() are indexes into this list.
const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute_format_arg__(1);
-
-const char * const * I18nLanguages(void);
-const char *I18nLanguageCode(int Index);
+ ///< Translates the given string (with optional Plugin context) into
+ ///< the current language. If no translation is available, the original
+ ///< string will be returned.
+const char *I18nLocale(int Language);
+ ///< Returns the locale code of the given Language (which is an index as
+ ///< returned by I18nCurrentLanguage()). If Language is outside the range
+ ///< of available languages, NULL is returned.
+const char *I18nLanguageCode(int Language);
+ ///< Returns the three letter language code of the given Language (which
+ ///< is an index as returned by I18nCurrentLanguage()). If Language is
+ ///< outside the range of available languages, NULL is returned.
+ ///< The returned string may consist of several alternative three letter
+ ///< language codes, separated by commas (as in "deu,ger").
int I18nLanguageIndex(const char *Code);
+ ///< Returns the index of the language with the given three letter
+ ///< language Code. If no suitable language is found, -1 is returned.
const char *I18nNormalizeLanguageCode(const char *Code);
///< Returns a 3 letter language code that may not be zero terminated.
///< If no normalized language code can be found, the given Code is returned.
@@ -44,4 +77,6 @@ bool I18nIsPreferredLanguage(int *PreferredLanguages, const char *LanguageCode,
#define tr(s) I18nTranslate(s)
#endif
+#define trNOOP(s) (s)
+
#endif //__I18N_H