summaryrefslogtreecommitdiff
path: root/i18n.c
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2004-06-02 19:56:58 +0000
committerlordjaxom <lordjaxom>2004-06-02 19:56:58 +0000
commite0c2ee1d37c0f213f22a04df71710bebe3526f85 (patch)
tree8bfd3a4fa065abeb016134466523a1152202e597 /i18n.c
parente535cdbe09d9c13d79cd6722aafca5798b7d1e35 (diff)
downloadvdr-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.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/i18n.c b/i18n.c
new file mode 100644
index 0000000..0583ae1
--- /dev/null
+++ b/i18n.c
@@ -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());
+}