Wie verwalte ich Sprachvariablen in JavaScript?


8

In meiner benutzerdefinierten Komponente führe ich für jede Ansicht viele JavaScript-Überprüfungen durch. Die Validierung löst verschiedene Fehlermeldungen aus und diese Meldungen werden in der Sprachdatei en-GB.com_mycomp.ini konfiguriert. Ich schreibe die JavaScript-Aufnahme wie folgt in eine PHP-Datei.

in der view.html.php

require_once JPATH_COMPONENT.'/views/send/tmpl/validation.php';

validation.php

function doValidation(){
  // do some checking
  alert("<?php echo JText::_( 'VALIDATION_ERROR'); ?>");
}

Auf diese Weise wird der JavaScript-Code zusammen mit der PHP-Datei gerendert.

Ich dachte, ich würde die Standardfunktion $document->addScript(...)verwenden, damit die .js-Dateien als Teil des Headers geladen werden. Da ich die Inline-PHP-Anweisungen erhalten habe, kann ich das nicht so machen.

Hinweis: Ich möchte die Fehlermeldungen in der .js-Datei nicht fest codieren, da die Komponente sprachunabhängig ist.

Ich benötige eine Anleitung, wie JavaScript-Code mit sprachspezifischen Werten am besten eingefügt werden kann.

Antworten:


12

Joomla hat dafür eine bestimmte Methode. Zuerst wird in view.html.phpalle Strings hinzufügen, muss was mit diesem übersetzt werden:

JText::script('VALIDATION_ERROR');

Dadurch wird Ihre Zeichenfolge zum Javascript-Objekt hinzugefügt, das Sie später verwenden können.

Und in Javascript verwenden Sie:

Joomla.JText._('VALIDATION_ERROR')

Dadurch erhalten Sie eine passende Übersetzung in der aktuellen Sprache. Auf diese Weise können Sie JS und PHP in separaten Dateien speichern.


Wo kann man das JText::script('VALIDATION_ERROR');in eine view.html.phpDatei einfügen?
Ankit Suthar

@ankitsuthar Ja, view.html.php ist in Ordnung.
Rene Korss

@ankitsuthar Wenn Sie den Speicherort in der Datei gemeint haben, dann innerhalb der Anzeigemethode.
Rene Korss
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.