Zum Inhalt springen

Problem Mehrsprachigkeit

Erstellt am 25. Mai 2004 · 18 Antworten · letzte Antwort am 27. Mai 2004

Tags: Frage

junges ·

Hallo Forum,

meine Typo3 Seite funktioniert bis auf die Mehrsprachigkeit.
(Linux, Typo3 Version 3.6.0)

Ich möchte den Auftritt in Deutsch und Englisch anbieten.

Hier mein Template :

# Variablen für Sprachmodul
# Variablen für Sprachmodul
config.linkVars = L
config.sys_language_uid = 0
config.language = de

[globalVar = GP:L = 1]
config.sys.language_uid = 1
config.language = en
[global]

# Default PAGE object:
page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/styles/style.css
page.bodyTag = <body bgcolor="#FFFFFF" link="#15416D" vlink="#15416D" alink="#15416D" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
page.10 = TEMPLATE
page.10 {
template = FILE
template.file = fileadmin/index.html
workOnSubpart = DOKUMENT

# MARKER IMAGE
marks.LOGO = IMAGE
marks.LOGO.file = fileadmin/images/logo_intranet.jpg
marks.LOGO.file.width = 200

# MAKER NAVIGATION
marks.NAVIGATION = HMENU
marks.NAVIGATION.1 = GMENU
marks.NAVIGATION.1.NO {
allWrap = <tr><td>|</td></tr>
backColor = #FFFFFF
XY = 200, 20
10 = TEXT
10.text.field = title
10.fontFile = fileadmin/verdana.ttf
10.fontSize = 9
10.offset = 4, 10
10.niceText = 0
}

marks.NAVIGATION.2 = GMENU
marks.NAVIGATION.2.NO {
allWrap = <tr> <td> | </td> </tr>
backColor = #FFFFFF
XY = 200, 20
10 = TEXT
10.text.field = title
10.fontFile = fileadmin/verdana.ttf
10.fontSize = 8
10.offset = 10, 10
10.niceText = 0
}

# MARKER SPRACHE
marks.SPRACHE = PHP_SCRIPT
marks.SPRACHE {
file = fileadmin/scripts/my_languageMenu.php
}

# MARKER INHALT
marks.INHALT < styles.content.get


# CONTENT MARKER PFAD
marks.PFAD = HMENU
marks.PFAD {
special = rootline
special.range = 0 | -1
1 = TMENU
1.NO.allWrap = | &nbsp; :: &nbsp; |*| | &nbsp; :: &nbsp; |*| |
}
}

Und hier meine my_languageMenu.php :

<?PHP
$query = "SELECT * FROM pages_language_overlay WHERE pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay")."GROUP BY sys_language_uid";
$res = mysql(TYPO3_db,$query);
$langArr=array();
while($row=mysql_fetch_assoc($res)) {
$langArr[$row["sys_language_uid"]]=$row["title"];
}

$pointer = '<img src="fileadmin/images/pif.gif" align=middle>';

$flags = array();
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==0?"":"").'<a class="navi_link" href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=0"target=_top>DEUTSCH</a>';
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==1?"":"").'<a class="navi_link" href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=1"target=_top>ENGLISH</a>';

$content = '<tr><td></td><td class="text">'.implode(" / ",$flags).'</td></</tr>';
?>

Ich habe meine Startseite (Home) mit englischem Inhalt gefüllt und natürlich vorher eine neue Sprache angelegt.

Beim Aufruf der Seite ersetzt mit Typo auch brav den Marker ###SPRACHE### und ich sehe auch den Versuch der Variablenübergabe
0 für deutsch
1 für englisch

Das System schaltet aber nich auf Englisch um.

Was kann ich tun ?
Hat jemand eine Idee ?

Vielen Dank für Eure Hilfe

cu
junges

doku ·

ohne mir deinen code auch nur angeguckt zu haben:
steht dein englischer seiteneintrag vielleicht auf hidden?

junges ·
doku schrieb

ohne mir deinen code auch nur angeguckt zu haben:
steht dein englischer seiteneintrag vielleicht auf hidden?

Leider nein - so einfach war der Fehler nun doch nicht !

Aber danke für Deinen Tip

doku ·

ok, jetzt mal in die ersten zeilen reingelinst... 😉

änder doch mal deine konfiguration so:

config.linkVars = L
# German language, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
[global]
# English language, sys_language.uid = 1
[globalVar = GP:L = 2]
config.sys_language_uid = 1
config.language = en
config.locale_all = english
[global]
junges ·
doku schrieb

ok, jetzt mal in die ersten zeilen reingelinst... 😉

änder doch mal deine konfiguration so:

config.linkVars = L
# German language, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
[global]
# English language, sys_language.uid = 1
[globalVar = GP:L = 2]
config.sys_language_uid = 1
config.language = en
config.locale_all = english
[global]

Hi,

da tut sich leider auch nicht viel mehr ...

Müssen vielleicht noch irgendwelche static tmeplates aktiviert werden ?

doku ·

da tut sich leider auch nicht viel mehr ...

aber ein bißchen doch, oder wie?

dann liegt´s wohl an der php-datei, da solltest du wohl erstmal ganz ganz nah an der mitgelieferten datei dranbleiben... 😉
############

hab übrigens eben einen fehler dringehabt, es muß natürlich heißen:

[globalVar = GP:L = 1]

und nicht L=2 !

############

und deine sprache heißt hoffentlich en und nicht englisch? ich glaube, daß macht vielleicht auch was aus.

junges ·
doku schrieb

da tut sich leider auch nicht viel mehr ...

aber ein bißchen doch, oder wie?

dann liegt´s wohl an der php-datei, da solltest du wohl erstmal ganz ganz nah an der mitgelieferten datei dranbleiben... 😉

Soll ich also die example_langageMenu.php Datei verwenden ?

junges ·
doku schrieb

Soll ich also die example_langageMenu.php Datei verwenden ?

gips etwa mehrere??

Nein, das nicht aber ich habe diese Datei lt. meiner Doku übernommen und angepasst.

Wie müsste die denn aussehen - oder kann ich die Originaldatei einfach verwenden ?

cu junges

Ich habe jetzt mal die Originaldatei verwendet.
Das Umschalten auf Englisch funktioniert aber trotzdem noch nicht.
Was kann man denn da noch falsch machen ?
Ich finde keinen Fehler im Logfile.

CU

doku ·

...und angepasst.

nun ja, damit´s funktioniert müssen halt die uid zueinanderpassen, sonst erstmal nix.

deine angelegte neue sprache muß natürlich (bei deinem code) auch die uid 1 haben

junges ·
doku schrieb

...und angepasst.

nun ja, damit´s funktioniert müssen halt die uid zueinanderpassen, sonst erstmal nix.

deine angelegte neue sprache muß natürlich (bei deinem code) auch die uid 1 haben

Moment mir dämmert da gerade was ...

wo kann ich schnell feststellen welche Sprache welche uid hat ?

Im Listmodul ?

CU

doku ·

z.b. per mouseover über den languagerecord im backend oder klick auf den editierstift, dann steht oben als erstes sowas:

Website Language [...] - en

junges ·
doku schrieb

z.b. per mouseover über den languagerecord im backend oder klick auf den editierstift, dann steht oben als erstes sowas:

Website Language [...] - en

Hallo doku ! 😉

Danke für Deine Hilfe !
Ich habe mein Problem lösen können.

Noch eine Frage:
Wenn ich mein Projekt vom Testsystem auf ein Produktivsystem übernehmen möchte, was ist da zu beachten ?

cu
junges

doku ·

Ich habe mein Problem lösen können.

woran lag´s denn nun??

stell dir mal vor, ein anderer hat dieselben probleme, liest diesen thread und dann kommt kurz vor dem höhepunkt solch ein interruptus...

erst anderen löcher in den bauch fragen und selbst die hilfe/information verweigern.

hmmmm...

junges ·
doku schrieb

Ich habe mein Problem lösen können.

das is jetzt aber nicht nett, daß du nicht sagst, wie du es lösen konntest... #evil#

OK, sorry !
Hier kommt die Lösung :

1. Ich habe in mein Haupttemplate folgenden Code eingefügt:

# Variablen für Sprachmodul
config.linkVars = L

# German language, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
[global]

# English language, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 4
config.language = en
config.locale_all = english
[global]

Das passt jetzt für mein System !

2. Ich habe die Datei example_languageMenu.php in den Pfad /fileadmin/scripts mit dem Namen my_languageMenu.php kopiert.

Hier das angepasste Script:

if (!is_object($this)) die ('Error: No parent object present.');

// First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');

$langArr = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$langArr[$row['sys_language_uid']] = $row['title'];
}

// Little red arrow, which is inserted to the left of the flag-icon if the TSFE->sys_language_uid equals the language uid (notice that 0=english, 1=danish and 2=german is SPECIFIC to this database, because these numbers refer to uid's of the table sys_language)
$pointer = '<img src="t3lib/gfx/content_client.gif" width="7" height="10" align="middle" alt="" />';

// Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
$flags = array();
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0').'" target="_top"><img src="media/uploads/flag_de'.($langArr[2]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

// Make the little menu. Notice, the menu does ONLY transfer the page-id and the "L" variable (which is also SPECIFIC for this website because "L" has been used in the extension template used to control the language setup)
$content = '<table border="0" cellpadding="0" cellspacing="0"><tr><td><img src="clear.gif" width="10" height="1" alt="" /></td><td>'.implode('',$flags).'</td></tr></table>';

?>

Das funktioniert jetzt auch soweit.
Habe aber noch folgendes Problem:

Wenn ich Englisch auswähle, dann werden die Hauptnavigationspunkte auch übersetzt.

Ich habe aber noch eine zweite Ebene, die zuerst auf Deutsch zurückspringt.
Klicke ich dann auf den Unterpunkt, erscheint diese auch in Englisch.

Hast Du noch eine Idee ?

cu
junges

doku ·

es ist zwar nur ein kommentar, aber ein falscher:

# English language, sys_language.uid = 1 
[globalVar = GP:L = 1] 
config.sys_language_uid = 4

also: # English language, sys_language.uid = 4

die zuerst auf Deutsch zurückspringt.

alle caches gelöscht??

junges ·
doku schrieb

es ist zwar nur ein kommentar, aber ein falscher:

# English language, sys_language.uid = 1 
[globalVar = GP:L = 1] 
config.sys_language_uid = 4

also: # English language, sys_language.uid = 4

die zuerst auf Deutsch zurückspringt.

alle caches gelöscht??

Hi,

ja habe ich. Mittlerweile hat sich das Problem erledigt.
Der Grund dafür war wohl, dass ich in meiner zweiten Menüebene Elemente hatte, für die es noch keine Übersetzung gab - für andere aber schon.

Der Hauptmenüpunkt war ebenfalls noch nicht übersetzt.
Jetzt habe ich alles angepasst - und es funktioniert.

DANKE für Deine Hilfe !
😃

Wenn ich das komplette Projekt vom Testsystem auf ein Produktivsystem übernehmen möchte -
Was ist da alles zu beachten ?

cu
junges

doku ·

...Was ist da alles zu beachten ?

drei dinge:

1) die forumssuche benutzen.
2) die forumssuche benutzen
3) die frage, wenn sie dann tatsächlich immer noch nicht beantwortet sein sollte in einem neuen thread stellen.

junges ·
doku schrieb

...Was ist da alles zu beachten ?

drei dinge:

1) die forumssuche benutzen.
2) die forumssuche benutzen
3) die frage, wenn sie dann tatsächlich immer noch nicht beantwortet sein sollte in einem neuen thread stellen.

OK, werde mich künftig daran halten. 😉