Seite 1 von 1

[3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 25.12.2017 10:40
von ZNC
Da ich Schwierigkeiten habe, meine Fragestellung verständlich zu formulieren, nehmen wir mal folgendes Beispiel an:

Wenn ich deutsch eingestellt habe, so verweist der Link bei folgendem Beispiel korrekterweise auf die türkische Datenschutzrichtlinie, jedoch wird über die Variable {{ lang('TERMS_USE') }} "Datenschutzrichtlinie" anstelle "Gizlilik ilkeleri" angezeigt.

Code: Alles auswählen

<a href="{{ U_TERMS_USE }}&lang={% if S_USER_LANG == 'tr' %}de{% else %}tr{% endif %}" title="{{ lang('TERMS_USE') }}" role="menuitem">
	<span>{{ lang('TERMS_USE') }}</span>
</a>
Wie kann ich also das türkische TERMS_USE aus dem Deutschen ansteuern?

Re: [3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 26.12.2017 18:06
von canonknipser
Versuch es mal so:

Code: Alles auswählen

<a href="{{ U_TERMS_USE }}&lang={% if S_USER_LANG == 'tr' %}de{% else %}tr{% endif %}" title="{% if S_USER_LANG == 'tr' %}Datenschutzerklärung{% else %}Gizlilik ilkeleri{% endif %}" role="menuitem">
   <span>{% if S_USER_LANG == 'tr' %}Datenschutzerklärung{% else %}Gizlilik ilkeleri{% endif %} </span>
</a>

Re: [3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 27.12.2017 09:08
von ZNC
Danke canonenknipser für Deine Rückmeldung. Verstehe ich Dich richtig, dass ich nicht auf die anderssprachigen Variablen in z. B. common.php zugreifen kann?

Re: [3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 27.12.2017 10:21
von canonknipser
Nicht, wenn du rein im Template bleiben willst. Für jeden Benutzer werden die sprachspezifischen Variablen zu Beginn eines phpBB-Scriptes geladen, entweder aus der Sprachangabe im Profil oder, wenn angegeben, aus der Angabe in der Variable lang. Wenn du zweisprachige Ausgaben haben willst, kannst du nicht einfach im template zwischen den Sprachen umschalten, sondern müsstest dann ein separates Script erstellen, dass den jeweils anderen Sprachsatz einliest. Dadurch wird aber der normale Sprachsatz überschrieben (jede Sprachvariable ist ja ein benannter Eintrag im Array $lang, also hier $lang['TERMS_USE']) - also musst du tricksen. Grob im Pseudocode (ungetestet, nur als Idee):

Code: Alles auswählen

// andere Sprache laden
$user->user_lang = "andere Sprache";
$user->add_lang('common');
// gewünschte Variable sichern
$temp_terms_use_andere_sprache = $user->lang['TERMS_USE'];
// ursprüngliche Sprache laden
$user->user_lang = "ursprüngliche Sprache";
$user->add_lang('common');
// Sprachvariable zum aktuellen Spracharray hinzufügen
$user->lang = array_merge($user->lang, array('TERMS_USE_OTHER_LANGUAGE' => $temp_terms_use_andere_sprache));


Alternativ (vielleicht auch die sauberste Variante) bastelst du dir eine Extension, die je ein Language-File de/termuse (mit dem türkischen Wort) und tr/termuse (mit dem deutschen Wort) als Variable TERMS_USE_OTHER_LANGUAGE enthält , lädst diese Extension z.B. im core.user_setup_after - der Listener enthält dann nur das Laden der Sprachdatei (add_lang('termuse')).

Im Template sprichst dann in beiden Fällen die TERMS_USE_OTHER_LANGUAGE an:

Code: Alles auswählen

<a href="{{ U_TERMS_USE }}&lang={% if S_USER_LANG == 'tr' %}de{% else %}tr{% endif %}" title="{{ lang('TERMS_USE_OTHER_LANGUAGE') }}" role="menuitem">
   <span>{{ lang('TERMS_USE_OTHER_LANGUAGE') }}</span>
</a>

Für deinen Anwendungsfall (weil du ja "nur" auf die Nutzungsbedingungen in der jeweils anderen Sprache verlinken willst) ist es sicher einfacher, das eine Wort in beiden Sprachen in das Template hineinzuschreiben ;)

Re: [3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 28.12.2017 10:45
von canonknipser
Mir war langweilig - die Extension findest du hier: http://canonknipser.com/viewtopic.php?f=16&t=42#p48 ;)

Re: [3.2] Anderssprachige Sprachvariable ansprechen

Verfasst: 30.12.2017 07:47
von ZNC
Was machst Du, wenn Dir nicht langweilig ist :o :-? :P
Würde ich auch können wollen :D
Habs runtergeladen, lieben Dank.