Lieber Linuchs,
<p>Irgendwas ###Bitte gib die Postleitzahl oder den Namen deines Ortes ein###Please enter the postal code or the name of your place###Voer de postcode of de naam van uw plaats in### ist los am [datum].</p>
hmm. Verstehe ich das?
- Irgendwas Bitte gib die Postleitzahl oder den Namen deines Ortes einist los am 1.1.1970.
- Irgendwas Please enter the postal code or the name of your placeist los am 1.1.1970.
- Irgendwas Voer de postcode of de naam van uw plaats inist los am 1.1.1970.
Sollen so die Ergebnisse aussehen? Warum nicht so?
<p>{#new-event-for-date} <strong>{$date}</strong></p>
<ul>
  <li>
    <label>
      <span data-i18n="event-title"></span>
      <input name="event-title" type="text">
    </label>
  </li>
  <li>
    <label>
      <span data-i18n="zip"></span>
      <input name="event-zip" type="text">
    </label>
  </li>
</ul>
Nur zur Erläuterung: Ich unterscheide in meinen Templates zwischen Sprachbausteinen ({#key}) und Daten ({$var}).
Eine passende JSON-Datei müsste nun so aussehen:
{
  "event-title": {
    "de": "Titel der Veranstaltung",
    "en": "Event Title",
    "nl": "Titel van het evenement"
  },
  "new-event-for-date": {
    "de": "Neue Veranstaltung am",
    "en": "New event on",
    "nl": "Nieuw evenement op"
  },
  "zip": {
    "de": "Postleitzahl",
    "en": "ZIP Code",
    "nl": "Postcode"
  }
}
In PHP ist klar, wie man die jeweiligen Sprachbausteine bekommt:
$i18n = json_decode($dateipfad, true); // true = assoziatives Array
$lang = 'de'; // aktuelle Sprachwahl
function translate($key) {
  $text = $key; // fallback
  /* Kann man $i18n und $lang so in der
   * Funktion verfügbar machen? Ich arbeite
   * nur mit Objekten und die können auf
   * $this->i18n zugreifen.
   */
  global $i18n;
  global $lang;
  // default: Englisch - nur z.B.
  if (array_key_exists($key, $i18n)
    && array_key_exists('en', $i18n[$key])
  ) {
    $text = $i18n[$key]['en'];
  }
  if (array_key_exists($key, $i18n)
    && array_key_exists($lang, $i18n[$key])
  ) {
    $text = $i18n[$key][$lang];
  }
  return $text;
}
echo translate('event-title'); // Titel der Veranstaltung
In JavaScript ist das im Grunde das selbe. Stellen wir uns vor, die Daten lägen in der Variablen i18n:
const i18n = {}; // wird mit PHP oder AJAX befüllt
let currentLang = "de"; // aktuelle Sprachwahl
function translate (key) {
  let text = key; // fallback
  // default: Deutsch - nur z.B.
  if (i18n[key] && i18n[key].de) {
    text = i18n[key].de;
  }
  if (i18n[key] && i18n[key][currentLang]) {
    text = i18n[key][currentLang];
  }
  return text;
}
Der Datumswert für {$date} sollte bei deutscher Sprachausgabe das Format TT.MM.JJJJ haben, bei englischer MM/DD/YYYY. Keine Ahnung, wie das in den Niederlanden ist.
Liebe Grüße
Felix Riesterer
 nicht angemeldet
 nicht angemeldet Der Martin
 Der Martin kai345
 kai345 Gunnar Bittersmann
 Gunnar Bittersmann Matthias Apsel
 Matthias Apsel