Hi,
wochentage = ["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],
weekdays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
diasdelasemana = ["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"],
case "wd" : if (lang == "deu") { return wochentage[weekDay]; }
else if (lang == "eng") { return weekdays[weekDay]; }
else if (lang == "esp") { return diasdelasemana[weekDay]; } break;
Wie wäre es, die übersetzten String anders abzuspeichern? Ein erster Ansatz wäre etwas wie
~~~javascript
var weekday_names = {
'deu' : ["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],
'eng' : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
'esp' : ["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"]
};
Dann kannst du einfach mit [code lang=javascript]weekday_names[lang][weekDay]
~~~ zugreifen und brauchst kein umständliches if/else-Gedöns mehr, um das auseinanderzuhalten (was dir enorme Vorteile bringt, wenn du eine zusätzliche Sprache einfügen willst).
Und als nächstes könntest du die Datenhaltung nochmals umstellen, z.B.:
~~~javascript
var i18n_strings = {
'deu' : {
'weekday_names' : [ /* ... */ ],
'month_names' : [ /* ... */ ]
},
'eng' : { /* .... */ }
};
Dann suchst du am Anfang deines Codes die Sprache aus und speicherst diese zwischen.
var mylang_strings = i18n_strings['deu'];
Im Folgenden brauchst du nur noch auf mylang_strings zugreifen und brauchst keinerlei Fallunterscheidung mehr. Du könntest sogar die Daten in eine externe Datei auslagern.
deutsch.js könnte dann so aussehen:
var i18n_strings = i18n_strings || {};
i18n_strings['deu'] = {
'weekday_names' : [ /* ... */ ],
'month_names' : [ /* ... */ ]
}
Von solchen Sprachdateien kannst du beliebig viele einbinden und kannst dann auf die Sprachen zugreifen. Um eine Sprache mehr anzubieten, einfach Sprachdatei erstellen und dann einbinden.
Bis die Tage,
Matti