Matti Mäkitalo: Neue Methode für Date-Object - ist das gutes scripting?

Beitrag lesen

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