You are not logged in.

  • Login

1

Tuesday, July 18th 2006, 4:26pm

Sprachdateien über "DEFINE" auch für Javascript mö

Hi,

ich hab mir hier eine kleine Sprachunterstützung gebastelt.

Im Prinzip wählt der Nutzer beim Betreten der Seite eine Sprache; die Einstellung wird dann lokal in einem Cookie gespeichert. Fortan lesen alle Funktionen diesen Cookie aus und setzen die jeweilige Sprache, also so:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(isset($_COOKIE["language"])) {
	if ($_COOKIE["language"] == "de") {
		$language = $_COOKIE["language"];
		include("lang/language_de.php");
	}
	if ($_COOKIE["language"] == "en") {
		$language = $_COOKIE["language"];
		include("lang/language_en.php");
	}
}
else {
	$language = "de";
	include("lang/language_de.php");
}


Die Sprachdatei sieht dabei so aus:

PHP Quellcode

1
2
3
define("_BLA","Blubb");
define("_BLAEH","Plupp");
define("_DING","Moep");


Soweit so gut, aber was ist mit den ganzen Javascripts auf meiner Seite?

Wie bekomme ich dafür eine dynamische Übersetzung hin? Gibt es sowas wie DEFINE in Javascript oder wie macht man das?

Am liebsten wäre es mir ja, wenn alle Begriffe, die im Javascript stehen, auch in der zentralen PHP-Sprachdatei definiert werden könnten.

Da aber Javascript Client-seitig und PHP Server-seitig sind, müssen also die Spracheinstellungen vorm Übertragen der Javascripts ausgelesen werden. Darauf folgt eine Aufbereitung und Übertragung der Javascripts zum Client.

Doch wie mache ich das genau?

Wenn das nicht geht, wie kann ich eine Extra Javascript-Sprachdatei aufmachen und in meinen Scripts Platzhalter für alle Texte setzen, die durch die Begriff in der Sprachdatei ersetzt werden (also direkt auf dem Client)?

Besten Dank!

2

Tuesday, July 18th 2006, 5:37pm

nein, bitte die texte nicht auslagern in javascript...
dann hat der gemeine nutzer ohne javascript gar keinen content mehr - und was ist mit den suchmaschinen? nicht vorzustellen...

also ich würds nicht machen...
sowas wie define gibts im javascript nicht.. aber wenn du unbedingt ein bisschen mehr performance rausholen willst, kannst du natürlich (seit javaScript 1.5) mit Konstanten arbeiten

JavaScript Code

1
const variable = "inhalt";


ich würds aber über php realisieren:
entweder unschön mit domain.de/file.php?lang=en
oder mit schönem mod_rewrite: domain.de/en/file.php

3

Tuesday, July 18th 2006, 6:53pm

Achso, nein, es handelt sich nicht um eine Webseite; sondern um eine Webanwendung, die in einem lokalen Netzwerk läuft. Javascript ist sowieso Voraussetzung für die Webanwendung. Insofern macht das keinen Unterschied.

Wie definiere ich denn die Texte?

Ich hätte es jetzt so gemacht, dass ich IF-ELSE-Strukutren aufbaue, den Cookie auslese und darüber die Sprache differenziere. Aber das ist ja umständlich ohne Ende.

Deswegen hätte ich die Javascript-Texte gerne ausgelagert und definiert. Dafür muss es doch eine leichtere Lösung geben, als alles mit IF-ELSE zu machen?

4

Tuesday, July 18th 2006, 8:18pm

ach stimmt... assoziative array unter javascript - da war doch was
naja, dann müssen objekte dafür herhalten

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
var lang = new Array();
 
lang[0] = new Object();
lang[0].food = "food";
lang[0].eats = "eats";
 
lang[1] = new Object();
lang[1].food = "essen";
lang[1].eats = "isst";
 
var change = 1; //umschalter
 
document.write( lang[change].food   +" "+   lang[change].eats);


oder aber du realisierst es mit ajax und php :-D
sollte ja kein problem sein..
dann kannst du auch mit DEFINE arbeiten

kannst ja einfach die javascript variable an die php url übergeben..

5

Tuesday, July 18th 2006, 9:32pm

Ja, das ist gut!!

Ich hab jetzt hier ungefähr 30 Javascript-Funktionen über ca. 10 Dateien verteilt.

Wie kann ich denn jetzt eine einheitliche Sprachdatei mit den assoziativen Arrays einbinden? Oder _muss_ das jetzt für jede Datei separat gemacht werden?

6

Wednesday, July 19th 2006, 9:11am

wie meinst du das?
wenn es eine einheitliche sprachdatei sein soll, dann reicht doch das einbinden des "lang" Objektes in einer externen javascript

HTML Code

1
<script type="text/javascript" src="lang.js" />

7

Wednesday, July 19th 2006, 4:39pm

Ja, exakt. Das ist es ... ok, mir war nicht bewusst, dass alle anderen eingebundenen externen Scripts dann darauf Zugriff haben.

Besten Dank!! Und nun: Ab in den Serverraum - abkühlen. :-)

Similar threads

Social bookmarks