diff options
author | lordjaxom <lordjaxom> | 2004-06-02 19:56:58 +0000 |
---|---|---|
committer | lordjaxom <lordjaxom> | 2004-06-02 19:56:58 +0000 |
commit | e0c2ee1d37c0f213f22a04df71710bebe3526f85 (patch) | |
tree | 8bfd3a4fa065abeb016134466523a1152202e597 /i18n.c | |
parent | e535cdbe09d9c13d79cd6722aafca5798b7d1e35 (diff) | |
download | vdr-plugin-text2skin-e0c2ee1d37c0f213f22a04df71710bebe3526f85.tar.gz vdr-plugin-text2skin-e0c2ee1d37c0f213f22a04df71710bebe3526f85.tar.bz2 |
- implemented image loading through ImageMagick (fixes crashes when runningv0.0.1-rc4
together with GraphTFT)
- implemented Theme support (see file demo.colors in the demo skin)
- implemented translations for texts used in skins (see file demo.trans in the
demo skin)
Diffstat (limited to 'i18n.c')
-rw-r--r-- | i18n.c | 58 |
1 files changed, 58 insertions, 0 deletions
@@ -0,0 +1,58 @@ +/* + * $Id: i18n.c,v 1.1 2004/06/02 20:43:05 lordjaxom Exp $ + */ + +#include "i18n.h" + +cText2SkinI18n::cText2SkinI18n(const char *Skin): cText2SkinFile(Skin) { + mIdentity = (string)"text2skin_" + Skin; + mNumPhrases = 0; + mPhrases = (tI18nPhrase*)malloc(sizeof(tI18nPhrase)); + memset(mPhrases[mNumPhrases], 0, sizeof(tI18nPhrase)); +} + +cText2SkinI18n::~cText2SkinI18n() { +} + +bool cText2SkinI18n::Parse(const char *Text) { + int l = strlen(Text); + bool result = false; + if (l) { + if (strncmp(Text, "Item=Translation,", 17) == 0) { + int i; + tI18nPhrase p; + memset(&p, 0, sizeof(tI18nPhrase)); + Text += 17; + + for (i = 0; i < I18nNumLanguages; ++i) { + string text; + if (ParseVar(Text, I18nLanguageCode(i), text)) + p[i] = strdup(text.c_str()); + else + p[i] = ""; + } + + int idx = mNumPhrases++; + for (i = 0; i < I18nNumLanguages; ++i) + if (!p[i]) p[i] = ""; + mPhrases = (tI18nPhrase*)realloc(mPhrases, (mNumPhrases + 1) * sizeof(tI18nPhrase)); + memcpy(mPhrases[idx], p, sizeof(tI18nPhrase)); + memset(mPhrases[mNumPhrases], 0, sizeof(tI18nPhrase)); + result = true; + } else + esyslog("ERROR: text2skin: syntax error"); + } + return result; +} + +bool cText2SkinI18n::Load(const string &Filename) { + if (cText2SkinFile::Load(Filename)) { + I18nRegister(mPhrases, mIdentity.c_str()); + return true; + } + return false; +} + +string cText2SkinI18n::Translate(const string &Text) { + return I18nTranslate(Text.c_str(), mIdentity.c_str()); +} |