Gunnar Bittersmann: mehrsprachige Texte in Scripten

Beitrag lesen

Hello out there!

Für Programme in verschiedenen Sprachversionen ist es ja sinnvoll, Ausgabetexte nicht im Quelltext zu verstreuen, sondern gesammelt zu notieren, also bspw. nicht

var heading = document.createElement("h1");  
heading.appendChild(document.createTextNode("Die Allgemeine Erklärung der Menschenrechte"));  
document.body.appendChild(heading);  
  
var article1 = document.createElement("p");  
article1.appendChild(document.createTextNode("Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen."));  
document.body.appendChild(article1);

und dann für die englische Version eine Extra-Version des Programms, sondern ein Programm mit allen Sprachen eher so:

var textHeading = {  
  de: "Die Allgemeine Erklärung der Menschenrechte",  
  en: "Universal Declaration of Human Rights"  
};  
  
var textArticle1 = {  
  de: "Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen.",  
  en: "All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood."  
};  
  
var lang = document.body.parentNode.lang; // sei im <html>-Tag das 'lang'-Attribut gesetzt  
  
var heading = document.createElement("h1");  
heading.appendChild(document.createTextNode(textHeading[lang]));  
document.body.appendChild(heading);  
var article1 = document.createElement("p");  
article1.appendChild(document.createTextNode(textArticle1[lang]));  
document.body.appendChild(article1);

1. Frage: Oder sollte man doch eher alle Texte in einem Objekt sammeln?

var text = {};  
  
text.heading = {  
  de: "Die Allgemeine Erklärung der Menschenrechte",  
  en: "Universal Declaration of Human Rights"  
};  
  
text.article1 = {  
  de: "Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen.",  
  en: "All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood."  
};  
  
var lang = document.body.parentNode.lang; // sei im <html>-Tag das 'lang'-Attribut gesetzt  
  
var heading = document.createElement("h1");  
heading.appendChild(document.createTextNode(text.heading[lang]));  
document.body.appendChild(heading);  
var article1 = document.createElement("p");  
article1.appendChild(document.createTextNode(text.article1[lang]));  
document.body.appendChild(article1);

2. Frage: Oder doch lieber so

var text = {};  
  
text.de = {  
  heading: "Die Allgemeine Erklärung der Menschenrechte",  
  article1: "Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen."  
};  
  
text.en = {  
  heading: "Universal Declaration of Human Rights",  
  article1: "All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood."  
}  
  
var lang = document.body.parentNode.lang; // sei im <html>-Tag das 'lang'-Attribut gesetzt  
  
var heading = document.createElement("h1");  
heading.appendChild(document.createTextNode(text[lang].heading));  
document.body.appendChild(heading);  
var article1 = document.createElement("p");  
article1.appendChild(document.createTextNode(text[lang].article1));  
document.body.appendChild(article1);

Die letzte Variante dürfte das Hinzufügen einer weiteren Sprache vereinfachen: copy and paste und übersetzen aller Texte.

Das Halten aller Sprachversionen desselben Texts in einem Objekt erscheint mir allerdings intuitiver und logischer, es macht auch durch die Nähe der entsprechenden Texte das Übersetzen einfacher. Allerdings muss man mehr aufpassen, dass man nicht bei einem Text das Hinzufügen der neuen Sprache vergisst.

Soll nicht eine neue Sprache, sondern ein neuer Text hinzugefügt werden, gilt alles andersrum (bis auf die Intuitivität). Wie würdet Ihr das implementieren?

See ya up the road,
Gunnar

--
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)