summaryrefslogtreecommitdiff
path: root/i18n.h
diff options
context:
space:
mode:
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