diff options
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()); +} |