Seite 1 von 1

[3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 30.07.2017 18:10
von ZNC
Ich möchte in meinem kopierten prosilver-Style ein Impressum einbinden, das je nach eingestellter Sprache (deutsch oder türkisch) verlinkt und je nach Sprache ein deutsch- oder türkischsprachiges Impressum anzeigt. Diese Methode könnte man grundsätzlich für jede andere mehrsprachige individuelle Seiten anwenden, wenn das Wörtchen "Wenn" nicht wäre.

Hierzu habe ich im Template-Verzeichnis meines Styles zwei HTML-Dateien:
1. impressum_de.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
	<h2>Impressum</h2>
	<p>usw. ...</p>
<!-- INCLUDE overall_footer.html -->
1. impressum_tr.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
	<h2>Künye</h2>
	<p>usw. ...</p>
<!-- INCLUDE overall_footer.html -->
Ich nutze eine Kopie des prosilver-Styles platziere mein Impressum in dem Standard-Template meines Styles overall_header.html folgendermaßen:

Code: Alles auswählen

<a href="http://www.meineseite.de/impressum.php" title="{L_TITEL_IMPRESSUM}">{L_TITEL_IMPRESSUM}</a>
Dann erstelle ich in dem phpBB3-Verzeichnis eine Datei impressum.php:

Code: Alles auswählen

<?php
/**
* @author
* @package {PACKAGENAME}
* @version $Id$
* @copyright
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
/* @ignore */
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin(); // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/meine_sprachvariablen'); // Sprachvariablen aus eigener Sprach Datei laden
page_header($user->lang['TITEL_IMPRESSUM']);
$template->set_filenames(array(
    'body' => 'impressum_' . $user->lang['ISO_SPRACHKENNUNG'] . '.html',
));
page_footer();
?>
Und zu guter Letzt erstelle ich für jede installierte Sprache jeweils im Languages-Verzeichnis
1. phpBB3/languages/de/mods/meine_sprachvariable.php:

Code: Alles auswählen

<?php
/**
* groups [German]
* @author
* @package language
* @version $Id$
* @copyright
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
if (!defined('IN_PHPBB'))
{
    exit;
}
if (empty($lang) || !is_array($lang))
{
    $lang = array();
}
$lang = array_merge($lang, array(
    'ISO_SPRACHKENNUNG' => 'de',
    'TITEL_IMPRESSUM'	=> 'Impressum',
));
?>
2. phpBB3/languages/tr/mods/meine_sprachvariable.php:

Code: Alles auswählen

<?php
/**
* groups [German]
* @author
* @package language
* @version $Id$
* @copyright
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
if (!defined('IN_PHPBB'))
{
    exit;
}
if (empty($lang) || !is_array($lang))
{
    $lang = array();
}
$lang = array_merge($lang, array(
    'ISO_SPRACHKENNUNG' => 'tr',
    'TITEL_IMPRESSUM'	=> 'Künye',
));
?>
Das alles funktioniert bis darauf, dass der Link aus meinem Forumsverzeichnis anstelle von Impressum TITEL_IMPRESSUM ausgibt.

Bin ich auf der Impressum-Seite, wird der Link korrekt übersetzt - in deutsch mit Impressum und in türkisch mit Künye. Wie kriege ich dies trotzdem hin, ohne die Standard-Sprachdateien zu manipulieren?

.

Re: [3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 31.07.2017 11:52
von gn#36
Der Link wird an einer Stelle angezeigt, wo deine Sprachvariablen nicht geladen werden. Du musst dafür sorgen, dass deine Sprachvariable global verfügbar wird, so dass der Style sie findet. Das geht z.B. mit einer Erweiterung wie in unserer KB beschrieben:

KB:ext_erstellen

Passenderweise ist genau das Beispiel, eine eigene Sprachdatei einzubinden in dem Artikel zu finden: https://www.phpbb.de/kb/ext_erstellen#f ... veraendern

Wenn du es ohne Erweiterung machen willst, dann wird dir nicht viel anderes übrig bleiben, als die Sprachpakete anzupassen und die neue Variable z.B. in die common.php des Sprachpakets zu stecken oder aber die PHP Dateien anzupassen und eine von dir gewählte Sprachdatei immer einzubinden (hier weiß ich gerade auswendig nicht, wo man das am besten einbaut, da gibt's mit Sicherheit mehrere Möglichkeiten).

Re: [3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 31.07.2017 13:33
von Kirk
Du könntest die Ext About Us/Impressum für phpBB 3.1/3.2 von Crizzo nehmen und so verändern:

Öffne: root/ext/crizzo/aboutus/event/listener.php
Finde:

Code: Alles auswählen

'ABOUTUS_ENABLE'	=> $this->config['acp_aboutus_enable'],
Danach einfügen:

Code: Alles auswählen

'ABOUTUS_OUTPUT'	=> $this->user->lang('ABOUTUS_OUTPUT'),
In den language dateien z.b. root/ext/crizzo/aboutus/language/de/common.php fügst das ein 'ABOUTUS_OUTPUT' => 'deininhalt',
ersetze einfach das hier deininhalt mit dem Inhalt wo du angezeigt haben möchtest.
Eine türkische language Datei ist in dieser EXT bereits vorhanden.
Mit dieser Änderung wird was du im ACP/Erweiterungen/Impressums-Einstellungen in diesem Editor eingibst ignoriert.
In diesen Language Dateien kannst du auch Formatierungen anwenden.

Re: [3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 07.08.2017 08:07
von ZNC
@gn#36, derzeit habe ich die
/forum/phpBB3/language/de/common.php

Code: Alles auswählen

	'ISO_SPRACHCODE'	=> 'de',
	'TITEL_IMPRESSUM'			=> 'Impressum',
und
/forum/phpBB3/language/tr/common.php

Code: Alles auswählen

	'ISO_SPRACHCODE'	=> 'tr',
	'TITEL_IMPRESSUM'			=> 'Künye',
ergänzt und dokumentiert, wie auch bei 3.1. Die von Dir genannten Infos lese ich mir durch, danke hierfür.

@Kirk, ich möchte, wie erwähnt, so wenig wie möglich an Extensions einbinden und somit die Kontrolle selber behalten.

Re: [3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 07.08.2017 08:46
von Mahony
Hallo
Ich würde empfehlen, nur eine impressum.html anzulegen (das erleichtert die spätere Pflege).

Folgender Inhalt sollte dann in die impressum.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
   <h2>{L_TITEL_IMPRESSUM}</h2>
   <p>usw. ...</p>
<!-- INCLUDE overall_footer.html -->
Anstelle von

Code: Alles auswählen

<p>usw. ...</p>
in der impressum.html kannst du auch den Text in einer Sprachvariable in die /language/xx/mods/meine_sprachvariable.php packen und sie dann in der impressum.html aufrufen.

Die impressum.php sollte dann so aussehen

Code: Alles auswählen

<?php
/**
* @author
* @package {PACKAGENAME}
* @version $Id$
* @copyright
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
/* @ignore */
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin(); // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/meine_sprachvariable'); // Sprachvariablen aus eigener Sprach Datei laden
page_header($user->lang['TITEL_IMPRESSUM']);
$template->set_filenames(array(
    'body' => 'impressum.html',
));
page_footer();
?>
Dann kannst du auch die Sprachvariablen

Code: Alles auswählen

'ISO_SPRACHCODE'   => 'de',
und

Code: Alles auswählen

'ISO_SPRACHCODE'   => 'tr',
aus der jeweiligen /language/xx/common.php heraus nehmen.

Grüße: Mahony

Re: [3.2] mehrsprachiges Impressum ohne Extension selber einbinden

Verfasst: 07.08.2017 10:11
von ZNC
@ Mahony, ja, das wäre auch eine Möglichkeit. Vielen Dank.