Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 21. Januar 2011 10:50
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Hallo
ich habe im Frontend User verschiedene Customfelder erstellt wie z.B. Vorname, Name, Adresse etc... jetzt sind die natürlich in Deutsch aber ich habe 2 Sprachen für meine Webseite.
Wen ich auf die Englischen Seite wechsle Verändern sich die Daten auf "Einstellung ändern" von den Vorgegebenen Felder wie z.B.
Benutzername -> Username , Passwort -> Password.
Dies wollte ich jetzt auch so für die Customfelder und dachte ich kann dies einfach in der lang Datei "en_US" mit
"$lang['prompt_customfeldname] = 'Customfeldlabel';" ändern aber leider funktioniert dies nicht.
Hätte jemand eine Lösung für mich?
Besten Dank
Offline
#2 25. Januar 2011 22:42
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Das sind wohl die Grenzen, wo CMSms halt doch keine MLE-Version beinhaltet ...
Offline
#3 26. Januar 2011 13:17
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Schade schade.. das ist etwas das CMSMS echt gut gebrauchen könnte
Offline
#4 26. Januar 2011 13:39
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Schade schade.. das ist etwas das CMSMS echt gut gebrauchen könnte
Mit dieser Meinung bist du nicht allein
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#5 26. Januar 2011 13:59
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Könntest du nicht auch direkt in die Templates reingehen und die Beschriftung manuell setzen?
Oder du machst es händisch mit CGSimpleSmarty
{if {$cgsimple->get_parent_alias() == 'en'}
<p>english label</p>
{else}
<p>deutsches Label</p>
{/if}
Offline
#6 26. Januar 2011 14:31
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Geht leider nicht, weil die Labels durch einen Smarty Tag aufgerufen werden und dies in einer foreach schleife ist.
Darum dachte ich diese geht irgendwie mit der "Lang" datei weil dort z.B. username und passwort auch auf deutsch Übersetzt werden.
Offline
#7 26. Januar 2011 15:00
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Geht leider nicht, weil die Labels durch einen Smarty Tag aufgerufen werden und dies in einer foreach schleife ist.
Gib mal ein bißchen mehr Input (Sourcen) - das hilft mir beim Denken .
Du kannst ja an Smarty zuweisen, was du willst ... auch Arrays. Das könntest du dann in der foreach-Schleife wieder auflösen, so etwas wie hier
Offline
#8 26. Januar 2011 15:18
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
{foreach from=$controls item=control}
<div class="feld {$control->name}">
{$control->hidden}
<label class="{$control->prompt}"><font color="{$control->color}">{$control->prompt}{$control->marker}</font></label>
{if isset($control->image)}{$control->image}{/if}
{$control->control}<div class="text">{$control->addtext}</div>
{if isset($control->control2)}{$control->prompt2} {$control->control2}{/if}
</div>
{/foreach}
Offline
#9 26. Januar 2011 18:53
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Wie wäre es mit dem module_custom Verzeichnis, einer eigenen Sprachdatei und dem FrontEndUsers Objekt?
D.h. Du legst im CMS Installationsverzeichnis folgende Verzeichnisstruktur an:
/module_custom/FrontEndUsers/lang/de_DE.php
/module_custom/FrontEndUsers/lang/en_US.php
...
usw.
Für jede Sprache eine Datei.
Dort schreibst Du einfach folgendes rein:
(de_DE.php)
<?php
$lang['input_vorname'] = 'Vorname';
$lang['input_name'] = 'Name';
$lang['input_adresse'] = 'Adresse';
$lang['input_irgendwas'] = 'Irgendwas';
...
?>
(en_US.php)
<?php
$lang['input_vorname'] = 'First name';
$lang['input_name'] = 'Name';
$lang['input_adresse'] = 'Address';
$lang['input_irgendwas'] = 'Something';
...
?>
Also kurz: $lang['input_NAME DER BENUTZEREIGENSCHAFT'] = 'Blah';
Jetzt kommt es aber darauf an, wie du die Mehrsprachigkeit umsetzt.
Setzt Du auf Babel oder mleCMS, kann es sein, dass es bereits eine Templatevariable gibt, die die ausgewählte Sprache beinhaltet.
Diese verwendest Du einfach als lang-Parameter beim Modulaufruf von FrontEndUsers.
Einfach mal mit {get_template_vars} oder in der jeweiligen Modulhilfe nachschauen welche Variable das ist.
Setzt Du aber auf die Methode mit der Seitenhierarchie, musst Du die Sprache erst ermitteln.
Das kannst Du so machen, wie Cyberman bereits vorgeschlagen hat:
Du verwendest CGSimpleSmarty, um das Alias der ersten Seite in der Hierarchie zu ermitteln
Bsp:
{$cgsimple->get_root_alias('','lang')}
{if $lang == ''}{assign var='lang' value='de_DE'}{/if} {* <- Standardsprache falls nichts gefunden wird *}
Dazu müssen die Seitenaliases des jeweiligen Sprachzweigs aus dem Sprachkürzel bestehen (z.B. de_DE).
Dann rufst Du das FrontEndUsers Modul mit dem lang-Parameter auf:
{FrontEndUsers ... lang="$lang"}
Jetzt sind schonmal Benutzername, Passwort und Email-Adresse in der jeweiligen Sprache.
Den Rest erledigst Du über das {$mod} Objekt im FrontEndUsers-Template und der lang-Funktion:
{foreach from=$controls item=control}
<div class="feld {$control->name}">
{$control->hidden}
{if $control->name != 'password' && $control->name != 'repeat_password' && $control->name != 'username'}
<label class="{$control->name}" for="{$feuactionid}feu_{$control->name}">
{else}
<label class="{$control->name}" for="{$feuactionid}feu_input_{$control->name|replace:'repeat_password':'repeatpassword'}">
{/if}
<font color="{$control->color}">
{if $control->name != 'password' && $control->name != 'repeat_password' && $control->name != 'username'}
{$mod->lang($control->name)}{$control->marker} :
{else}
{$control->prompt}{$control->marker} :
{/if}
</font>
</label>
{if isset($control->image)}
{$control->image}
{/if}
{$control->control}
{if $control->addtext}
<div class="text">
{$control->addtext}
</div>
{/if}
{if isset($control->control2)}
<label class="{$control->name}-2" for="{$feuactionid}feu_{$control->name}_clear">
{$control->prompt2}
</label>
{$control->control2}
{/if}
</div>
{/foreach}
Dieses Prinzip ließe sich übrigens auch für alle anderen Module wie z.B. News etc. anwenden, sofern diese ihre eigene Modulinstanz als Templatevariable bereitstellen würden.
Da das nicht alle Module tun und eigentlich auch nicht immer tun müssen, würde ich das mit einem Plugin lösen:
<?php
function smarty_cms_function_get_module($params, &$smarty)
{
$smarty->assign_by_ref($params['module'],cms_utils::get_module($params['module']));
}
?>
(unter /plugins/function.get_module.php speichern)
Im Template könnte man das dann wie folgt aufrufen:
{get_module module="News"}
{$News->lang('test')}
Somit kann man Mehrsprachigkeit für alle Module erreichen.
Einziges Problem ist, dass man die Sprachdateien für benutzerdefinierte Felder selbst anlegen muss.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#10 27. Januar 2011 15:09
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Suppper Vielen Dank genau das hab ich gebraucht .
Jetzt noch eine frage, woher weis das Module das es den Text im Verzeichniss "modul_custom/FrontEnd..."
holen soll?
Offline
#11 27. Januar 2011 21:27
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Das entwickelt sich ja hier zu einer genialen Anleitung für mehrsprachige Webs mit CMSms ... hab den Beitrag daher gleich mal in das passende Board verschoben.
Offline
#12 28. Januar 2011 02:59
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Jetzt noch eine frage, woher weis das Module das es den Text im Verzeichniss "modul_custom/FrontEnd..."
holen soll?
Das wurde vor einer Weile mal eingeführt (ich glaube seit CMSms 1.3).
Es ist aber leider viel zu wenig dokumentiert.
CMSms prüft bei jedem Modul automatisch, ob es eine Datei /module_custom/[MODULENAME]/lang/[SPRACHE].php bzw. eine /module_custom/[MODULENAME]/templates/[TEMPLATENAME].tpl gibt und bindet diese dann von selbst ein. Man kann somit auch Backend-Templates von Modulen ändern, ohne das Modul selbst zu verändern.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#13 28. Januar 2011 11:54
- dalton
- kennt CMS/ms
- Ort: Schweiz
- Registriert: 10. Januar 2011
- Beiträge: 162
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Ja das ist Genial.
Offline
#14 28. Januar 2011 15:54
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Nan, bitte hab Verständnis, wenn ich hier als einer frage, dem das "Easy" im Namen lieb und teuer ist:
Verstehe ich Dich richtig, dass Dein Vorschlag, Module und Scripts mehrsprachentauglich zu machen, eine Ergänzung ist beispielsweise zu babel oder MleCMS? Beim Testen mit letzterem habe ich festgestellt, dass das z.B. das Suchmodul nicht so ohne weiteres "übersetzt" werden kann. Da ahne ich nun, dass dein Vorschlag hier helfen würde ...
Beitrag geändert von redigo/ (28. Januar 2011 15:57)
Offline
#15 29. Januar 2011 00:16
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Kommt drauf an, was beim Searchmodul nicht korrekt übersetzt werden konnte.
Aber im Prinzip hast Du Recht.
Es ist nur eine Ergänzung, um Dinge zu übersetzen, die aus verschiedenen Gründen nicht vom Modul selbst übersetzt werden können.
Ich schätze mal beim Suchmodul geht es um die Einstellung für den voreingestellten Text für das Suchfeld.
Genau hier könnte man einfach "suchtext" eintragen und im Template für das Suchformular dann folgendes:
{get_module module="Search"}
<input type="text" ... value="{$Search->lang($searchtext)}" ... />
Dann braucht man wie oben bereits erwähnt einfach für jede Sprache eine Datei anzulegen
(/module_custom/Search/lang/de_DE.php)
<?php
$lang['suchtext'] = 'Suchtext eingeben...';
?>
(/module_custom/Search/lang/de_DE.php)
<?php
$lang['suchtext'] = 'Enter search text...';
?>
und fertig.
Es ist also ein Hilfsmittel, um Dinge zu übersetzen, die der Entwickler nicht bereits in seiner Sprachdatei einbauen konnte, weil er den zu übersetzenden Text nicht kennt.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#16 29. Januar 2011 09:24
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Es ist schön, wenn man sich verstanden fühlt ;-)
Nein, im Ernst, Deine Antwort ist für mich sehr hilfreich. weil ich mich als "Contentmensch" auf dieser Ebene nur mit präzisen Anleitungen einigermassen sicher bewegen kann. Aber wenn man halt für seinen Kunden eine mle-Version braucht, dann muss ich mich halt ein bisschen aufs Glatteis wagen.
Danke!
ps: Zdeno Kuzmanys Modul MleCMS liegt inzwischen in der V. 1.4 vor. Ich verfolge das weiter und berichte
http://www.cmsmadesimple.de/forum/viewtopic.php?id=345
Beitrag geändert von redigo/ (29. Januar 2011 09:31)
Offline
#17 29. Januar 2011 11:12
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Ich hab's probiert, allerdings nicht für "suchtext" sondern für "search-button" und kriege diese Fehlermeldung:
string(143) "Smarty error: [in module_db_tpl:Search;displaysearch line 3]: syntax error: unrecognized tag 'get_module' (Smarty_Compiler.class.php, line 590)"
Da steh ich natürlich an der Wand. Falls Du mir weiterhelfen könntest/möchtest, nan, wäre das toll.
Danke!
Offline
#18 29. Januar 2011 11:24
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Aha! "Search" im Template ist falsch, es muss "search" heissen. Damit ist der Smarty-Fehler weg.
Aber zu sehen bekomme ich nur eine weisse Seite mit den Sprachen und dem Suchfeld.
Ich gebe Dir mal den Code, wie er bei mir in der Originalversion de läuft (mit "Suchen" auf dem Input-button) und einem leeren Suchfeld.
{$startform}
<label for="{$search_actionid}searchinput"></label><input class="search-button" name="Suchen" value="{$submittext}" type="submit" /><input type="text" class="search-input" id="{$search_actionid}searchinput" name="{$search_actionid}searchinput" size="20" maxlength="50" value="{$searchtext}" searchtext="null" {$hogan}/> {if isset($hidden)}{$hidden}{/if}
{$endform}
Offline
#19 29. Januar 2011 14:44
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
1.:
Du musst natürlich das Plugin {get_module} erstellen.
D.h. den Code, den ich weiter oben gepostet habe:
<?php
function smarty_cms_function_get_module($params, &$smarty)
{
$smarty->assign_by_ref($params['module'],cms_utils::get_module($params['module']));
}
?>
unter plugins/function.get_module.php speichern.
Sonst kann CMSms mit {get_module} nichts anfangen und es kommt zu dieser Fehlermeldung.
2.:
<input class="search-button" name="Suchen" value="{$submittext}" type="submit" />
Was ich da markiert habe ist falsch.
Du darfst die Namen der Formular-Elemente nicht ändern.
Sonst kann das Modul das Formular nicht mehr auswerten, weil es bestimmte Elemente nicht mehr findet.
3.:
<input class="search-button" name="{$search_actionid}searchinput" value="{$submittext}" type="submit" />
Mit {$submittext} wird doch der Text des Buttons bereits vom Modul übersetzt.
Wenn Du dort einen anderen Text haben willst, dann gehe wie folgt vor:
3.a):
Du öffnest eine Sprachdatei des Suchmoduls (modules/Search/lang/en_us.php).
Dort suchst Du nach dem Text, den Du ändern möchtest.
Kopiere die Zeile mit dem Text ($lang['...'] = '...';).
Erstelle wie oben erklärt eigene Sprachdateien, füge die Zeile dort einfach ein
und ändere den übersetzten Text entsprechend ab.
Die Sache mit {get_module} usw. ist nur dann nötig, wenn es in der Sprachdatei des Moduls keinen Eintrag zum zu übersetzenden Text gibt. Dann muss man dem Modul sagen, dass es bitte den übersetzten Text für den Eintrag mit dem Namen $lang['X'] anzeigen soll:
{get_module module="Foo"}
{$Foo->lang('X')}
Aber immer darauf achten, dass 'X' nicht zuällig schon vom Modul verwendet wird.
Sonst wird auch an anderer Stelle wo es evtl. nicht gewollt war ein anderer Text ausgegeben.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#20 29. Januar 2011 15:01
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Ich habe noch - viel - zu lernen. ;-)
Erst mal vielen Dank!
Beitrag geändert von redigo/ (29. Januar 2011 15:05)
Offline
#21 30. Januar 2011 13:27
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Hallo Nan, ich wieder
Du hast recht, das Modul "search" enthält alles, was es für verschiedene Sprachversionen braucht. Und das funktioniert auch. Wenn ich im Backend /Globale Einstellungen/Stadardsprache für die Webseiten/ z.B. "English" wähle und dann eine Seite mit dem "Search"-Modul aufrufe, erscheint dort alles auf Englisch, was auf Englisch sein muss. So weit alles wunderbar.
Das Problem für mich mit MleCMS: Wenn ich hier die Sprache auf Englisch wechsle, erscheint alles auf Englisch, was ich i.S. des Moduls mleCMS entsprechend auf Englisch eingetragen habe. Aber das Suchmodul bekommt nicht mit, wenn mleCMS die Sprache wechselt. Was ja vom search-Modul aus gesehen auch logisch ist.
Meine Frage jetzt: Ist Dein Vorschlag mit den Plugin "get_template", den Sprachdateien und den Anpassungen im Modul-Template selber die Lösung extakt dieses Problems? Da bin ich mir nämlich jetzt nicht sicher, weil Du schreibst, get_modul sei nur nötig
... wenn es in der Sprachdatei des Moduls keinen Eintrag zum zu übersetzenden Text gibt.
Aber ich bin mir durchaus bewusst, dass ich mir immer noch selber auf dem Schlauch stehen könnte ;-)
Beitrag geändert von redigo/ (30. Januar 2011 13:40)
Offline
#22 30. Januar 2011 14:00
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Du hast einen wichtigen Punkt übersehen:
{Search ... lang="AUSGEWÄHLTE SPRACHE (z.B. en_US)"}
Wie Du die ausgewählte Sprache ermittelst, steht hier weiter oben.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#23 30. Januar 2011 16:51
- redigo/
- Server-Pate
- Ort: Zürich
- Registriert: 20. Januar 2011
- Beiträge: 485
- Webseite
Re: Mehrsprachigkeit für Module/benutzerdefinierte Felder (FEU,News,...)
Habe gerade in der "Roadmap" von Kuzmanys mleCMS diese Ankündigung entdeckt: "Separate search for each language"
Ich will mich also noch ein bisschen gedulden. Immerhin lagen zwischen 1.3 und 1.4 nur ein paar wenige Tage. ;-)
Einstweilen vielen Dank allen, die geduldig versucht haben, mir auf die Sprünge zu helfen.
Offline
Seiten: 1