# mehrsprachige HTML-E-Mail



## Airis (20. Juli 2005)

Hallo,

kann mir jemand sagen wie ich in Abhängigkeit der User-Browser-Ländereinstellung eine HTML-Mail mehrsprachig bekomme, d.h. wenn jemand die Ländereinstellung in spanisch hat, bekommt er die Mail in spanisch. Ist die Ländereinstellung englisch, bekommt er die Mail in englisch. In meiner Page (noch lokal) habe ich bereits mit einer Language-Datei für 4 Sprachen gearbeitet.
Ist so etwas für eine HTML-Mail auch möglich?

Viele Grüsse aus Frankreich
Airis


----------



## Dr Dau (20. Juli 2005)

Hallo!

Mit PHP ist es möglich..... allerdings nur bedingt.
So liefert mir der folgende Code beim IE "de" zurück, aber z.b. beim Mozilla "de,en;q=0.5".
Opera wiederum liefert "de;q=1.0,en;q=0.9" zurück.


```
<?php
echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
?>
```
Gruss Dr Dau


----------



## Gumbo (20. Juli 2005)

Du könntest folgende PHP-Codeschnipsel verwenden, um die akzeptierten Sprachen und deren Präferenz zu ermitteln:
	
	
	



```
<?php

	$parts = split(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	$accepted_languages = array();
	foreach( $parts as $part ) {
		preg_match('/([a-zA-Z\-]{2,})(?:;q=([0-9\.]+))?/', trim($part), $matches);
		$accepted_languages[ (count($matches)>2 ? $matches[count($matches)-1] : 1) ] = array_slice($matches, 1, (count($matches)>2 ? count($matches)-2 : 1));
	}

?>
```
Bei dem Wert de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3 entstünde beispielsweise ein Array, das folgendem Aufbau entspricht:
	
	
	



```
array (
	1	=> array( 0 => 'de-DE' ),
	'0.8'	=> array( 0 => 'de' ),
	'0.5'	=> array( 0 => 'en-US' ),
	'0.3'	=> array( 0 => 'en' )
)
```

Allerdings sollte man sich auf diese Werte nicht unbedingt verlassen, da es sicherlich auch Menschen gibt, die beispielsweise einen englischsprachigen User Agent benutzen und die Spracheinstellungen nicht verändert haben. Daher ist es immer besser den Benutzer selbst zu fragen beziehungsweise ihn selbst entscheiden zu lassen.


----------



## Dr Dau (20. Juli 2005)

Da muss ich Gumbo recht geben.
Meine Ergebnise bezogen sich auf Standardinstallationen der Borwser und im Zweifel erwarte ich nicht dass der User diese verändert.
Meine Mozilla Version nennt sich "Mozilla Deutsch", stammt von http://mozilla.kairo.at und bring von Haus aus "de" und "en" mit sich.
Meine Opera Version ist die deutsche Version von http://www.opera.com und bringt von Haus aus "de" und "en" mit sich.
Man könnte zwar die Reihenfolgen der Sprachen ändern und daher davon ausgehen dass der User die erste Sprache bevorzugt, aber verlässlich ist es nicht.

Ich gehe mal davon aus dass der User sich ein z.b. News-Letter bestellen kann?!
Dann würde ich auch sagen, lass den User selber wählen, z.b. über Radio-Buttons nach dem Motto "please set your language".
Um sicherzugehen, würde ich auch abfragen ob die Sprache ausgewählt wurde.


----------



## Airis (20. Juli 2005)

Hallo Ihr Beiden,


besten Dank für Eure umfangreichen Erläuterungen.
Ich komme allerdings immer noch nicht so richtig weiter. Ich habe mal eine Test-HTML-Mail erzeugt und versucht mit Konstanten aus dem Language-Script zu arbeiten. 
Diese werden im Sendeprogramm (Newsletter-Programm) angemeckert, obwohl ich die die functions.inc.php als kompl. URL eingegeben habe. Hängt vielleicht daran, das ich noch local bin?
Die Frage, die mich eigenlich beschäftigt, ist: Kann ich eine HTML-PHP-Mail genauso behandeln wie eine Webseite? D.h., ist es möglich mit dem von Gumbo vorgeschlagenen Script die akzeptierten Sprachen zu ermitteln (wie in einer Webseite) und zusätzlich dem User Länderfahnen zur Auswahl bereitzustellen?
Mein Problem ist éigenlich, das ich mit einem Newsletter-Script einen 4-sprachigen Werbeblock verschicken möchte.
Das sind momentan meine vielleicht nicht ganz klaren Vorstellungen.

Vieleicht hat jemand ja eine Idee oder kann mir einen Tipp geben.


Viele Grüsse aus Frankreich
Airis


----------

