HTML5 und Sprachsteuerung bei mehrsprachigen Seiten

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Post Reply
Ferny
Posts: 15
Joined: Fri Mar 09, 2012 1:09 pm

HTML5 und Sprachsteuerung bei mehrsprachigen Seiten

Post by Ferny » Sat Apr 14, 2012 10:17 am

Hallo zusammen,

meine Version ist XH 1.2 (ja ich muss updaten....)

Es gab vor einiger Zeit die Diskussion mit der Sprachsteuerung und HTML5. In HTML 5 validiert u.a. der Meta Tag content-language nicht mehr.
Es gibt aber den lang Tag in HTML5, mit dem man u.a die default Sprache einer Seite/Seitenversion (auch von einzelnen Blockelementen) angeben kann.

Code: Select all

Beispiel: <html lang="de,en, oder fr">
Aufbauend auf dem Inhalt von Gerts Posting vom Sun May 23, 2010 7:56 am unter http://www.cmsimpleforum.com/viewtopic. ... ble#p12264
wo beschrieben wurde, wie der Meta Tag content-language automatisch für jede Sprachversion generiert wird, habe ich das für HTML5 im Template etwas angepasst.

Man löscht im Template:

Code: Select all

<?php 
if ($cf['xhtml']['endtags'] == 'true') {
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n".
'<html xmlns="http://www.w3.org/1999/xhtml">'."\n";
} else {
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'."\n".'<html>'."\n";} 
?>
Und ersetzt es durch:

Code: Select all

<?php 
if ($cf['xhtml']['endtags'] == 'true') {
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n".
'<html xmlns="http://www.w3.org/1999/xhtml">'."\n";
} else {
echo '<!DOCTYPE html>'."\n".'<html lang="'.$sl.'">'."\n";} 
?>
In der Standardeinstellung ist dann HTML5 der Doctype und die Sprache wird automatisch im html-Tag mitangegeben.

Ergebnis für die englische Sprachversion im Ordner /en ist dann also:

Code: Select all

<!DOCTYPE html>

<html lang="en">
Bei den Sprachversionen einer Seite macht jetzt der W3CValidator aber immer noch Meppen in Bezug auf das Einlesen einiger Plugin Stylesheets. Solche URIs wie: ./../ validieren nicht, bzw. ergeben eine Warnung.
Hierfür muss man in der cms.php (bei mir V 1.2) folgendes ändern:

Code: Select all

if (@is_dir('./cmsimple/')) $pth['folder']['base'] = './';
 else $pth['folder']['base'] = './../';
ersetzen durch

Code: Select all

if (@is_dir('./cmsimple/')) $pth['folder']['base'] = './';
 else $pth['folder']['base'] = '../';
Zumindest bei mir funktionieren auch nach dieser Prozedur noch alle Plugins (Formmail, Kissgallery, Meta Tags, Page Params)

Das ist zwar nichts Besonderes, vielleicht kann es aber der ein oder andere brauchen.

Ergänzung: In alten XH Versionen wie meiner, also XH 1.2, wurde der Metatag content-language noch im head integriert, auch wenn man nicht Gerts oben beschriebene Lösung für mehrsprachige Seiten verwendet hatte. Das Problem war dann, dass man nicht für jede Sprachversion die richtige content-language angeben konnte. Damit dieser Meta-Tag in alten Versionen nicht mehr generiert wird löscht man in der config.php einfach die Zeile:

Code: Select all

$cf['meta']['content-language']="en";
Schönes WE
Ferny

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: HTML5 und Sprachsteuerung bei mehrsprachigen Seiten

Post by cmb » Sat Apr 14, 2012 11:24 am

Hallo Ferny,
Ferny wrote:ersetzen durch

Code: Select all

if (@is_dir('./cmsimple/')) $pth['folder']['base'] = './';
else $pth['folder']['base'] = '../';
Das könnte eigentlich im Core geändert werden.

Bzgl. der Sprachangabe fände ich ebenfalls eine Lösung im Core sinnvoll, falls das überhaupt einheitlich machbar ist. Das lang-Attribut für <html> gilt wohl erst ab HTML5. <meta name="content-language"> ist meines Wissens sowieso nie ein Standard gewesen. <meta http-equiv="Content-Language"> wird für HTML5 nicht mehr empfohlen. (Und da CMSimple dynamisch die Seiten per PHP generiert, wäre statt http-equiv sowieso die entsprechenden HTTP-Header sinnvoller, denke ich).

Übrigens: Vorsicht bei der Verwendung von $sl im Falle von Subsite-Installationen. Da gibt $sl nicht die Sprache, sondern den Namen der Subsite an, was dann wiederum wenig sinnvoll ist, oder vielleicht sogar nicht validiert.

Christoph
Christoph M. Becker – Plugins for CMSimple_XH

Ferny
Posts: 15
Joined: Fri Mar 09, 2012 1:09 pm

Re: HTML5 und Sprachsteuerung bei mehrsprachigen Seiten

Post by Ferny » Sat Apr 14, 2012 11:42 am

Hi CMB,

vielleicht habe ich es nicht richtig ausgedrückt. Also Ziel war es bei meiner Aktion, meine Seite auf HTML5 umzustellen. Da ja dann <meta name="content-language"> nicht mehr validiert, habe ich gesucht, ob es unter HTML 5 vielleicht eine Alternative gibt, um die Sprachversion einer Seite anzugeben. Bei dieser Suche stiess ich dann auf das lang Attribut und erinnerte mich an Gerts Posting von damals und habe es wie oben beschrieben übertragen.

Es funktioniert jedenfalls prima und die Seiten validieren. Nur die Standardwarnung wird ausgegeben.

(Bei HTML5 gibt es übrigens noch eine nette News. target="_blank" wird wahrscheinlich nicht mehr länger als "deprecated" gelten. -> War der Grund, warum ich mich zu HTML5 entschlossen habe.)

Viele Grüsse
Ferny

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: HTML5 und Sprachsteuerung bei mehrsprachigen Seiten

Post by cmb » Sat Apr 14, 2012 11:52 am

Hallo Ferny,
Ferny wrote:vielleicht habe ich es nicht richtig ausgedrückt. Also Ziel war es bei meiner Aktion, meine Seite auf HTML5 umzustellen.
Ja, habe ich auch so verstanden. Und die Änderungen sind ja auch gut! :) Ich denke, dass man diese fest in CMSimple_XH integrieren könnte, wenn man da eine allgemein brauchbare Lösung findet; derzeit ist die Doctype-Deklaration ja Sache des Templates, was ich eigentlich suboptimal finde.

Meine Bemerkung zu $sl war nur gedacht, um andere Anwender, die Deinen Vorschlag umsetzen, darauf hinzuweisen, dass das so bei Subsite-Installationen nicht unproblematisch ist.
Ferny wrote:Bei HTML5 gibt es übrigens noch eine nette News. target="_blank" wird wahrscheinlich nicht mehr länger als "deprecated" gelten.
Ich mag's trotzdem nicht ;)

Christoph
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply