Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

In diesem Forum kannst du Erweiterungen zu EasyHP und kleine Code-Schnipsel downloaden.

Moderator: Supporter

Antworten
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von daniel »

Hier habe ich mal mit der Hilfe von Tim eine Mod gebastelt, mit der man die Sprache des CMS anpassen kann, d.h. jeder Gast kann seine angezeigte Sprache anzeigen.

Bevor du anfängst erstelle ein Backup der Daten und der Datenbank

Datenbankänderungen
Als erstes müssen die Tabellen entsprechend umbenannt werden:

Code: Alles auswählen

RENAME TABLE `easyhp_menu` TO `easyhp_menu_de`;

Code: Alles auswählen

RENAME TABLE `easyhp_sites` TO `easyhp_sites_de` ;

Code: Alles auswählen

RENAME TABLE `easyhp_site_comments` TO `easyhp_site_comments_de`;

Code: Alles auswählen

RENAME TABLE `easyhp_site_news` TO `easyhp_site_news_de`;
Für die andere Sprache müssen dann auch entsprechende Datenbanktabellen angelegt werden.
Hier das Beispiel für en (Englisch):

Code: Alles auswählen

CREATE TABLE easyhp_menu_en (
  `id` int(11) NOT NULL auto_increment,
  `menu_order` int(10) unsigned NOT NULL default '0',
  `site_id` int(10) unsigned NOT NULL default '0',
  `title` varchar(55) collate latin1_general_ci NOT NULL default '',
  `link` varchar(255) collate latin1_general_ci NOT NULL default '',
  `ext` int(1) NOT NULL default '0',
  `window` varchar(15) collate latin1_general_ci NOT NULL default '',
  `level` char(1) collate latin1_general_ci NOT NULL default '0',
  `isset` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1

Code: Alles auswählen

CREATE TABLE easyhp_sites_en (
  `id` int(11) unsigned NOT NULL auto_increment,
  `title` varchar(55) collate latin1_general_ci NOT NULL default '',
  `text` mediumtext collate latin1_general_ci NOT NULL,
  `date` varchar(255) collate latin1_general_ci NOT NULL default '',
  `set_date` int(1) NOT NULL default '0',
  `cat` varchar(255) collate latin1_general_ci NOT NULL default '',
  `level` int(11) NOT NULL default '0',
  `trash` int(1) NOT NULL,
  `trash_date` varchar(255) collate latin1_general_ci NOT NULL,
  `comments_on` int(11) NOT NULL default '0',
  `news` int(1) NOT NULL default '0',
  `newssite` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1

Code: Alles auswählen

CREATE TABLE easyhp_site_comments_en (
  `id` int(11) NOT NULL auto_increment,
  `site_id` int(11) NOT NULL,
  `subject` varchar(55) collate latin1_general_ci NOT NULL,
  `username` varchar(255) collate latin1_general_ci NOT NULL,
  `date` varchar(255) collate latin1_general_ci NOT NULL,
  `text` text collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1

Code: Alles auswählen

CREATE TABLE easyhp_site_news_en (
  `id` int(11) NOT NULL auto_increment,
  `site_id` int(11) NOT NULL,
  `title` varchar(255) collate latin1_general_ci NOT NULL,
  `message` text collate latin1_general_ci NOT NULL,
  `username` varchar(255) collate latin1_general_ci NOT NULL,
  `date` varchar(255) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1
Die User können mit Hilfe von sites.php?id=2&l=en die Sprache auf Englisch umstellen. Mit sites.php?id=2&l=de kann man wieder auf Deutsch umstellen. Natürlich können auch alle anderen Sprachen verwendet werden, nur müssen diese in dem folgendem array in der includes/sprache.php definiert werden:

Code: Alles auswählen

$sprachen = array('de', 'en');
zusätzlich müssen hier die passenden Ordner für die Sprachen hinzugefügt werden (in der gleichen Reinfolge):

Code: Alles auswählen

$sprachenordner = array("german_formal", "english");
und natürlich die passenden tabellen erstellen (siehe oben)

Datei-Änderungen
Kopiere die includes/sprache.php nach includes/sprache.php
sprachen.rar
(61.41 KiB) 524-mal heruntergeladen
Öffne die includes/mysql.php

Finde :

Code: Alles auswählen

if (!defined("IN_EASYHP")) {
	die();
}
Und füge darunter ein:

Code: Alles auswählen

@include "includes/sprache.php";
@include "../includes/sprache.php";
Danach öffne die common.php.

Finde darin:

Code: Alles auswählen

@include "language/$config->default_language/main_language.php";
Und ersetze es durch:

Code: Alles auswählen

@include "language/$sprach_ordner/main_language.php";

Öffne die Datei includes/constants.php.

Finde:

Code: Alles auswählen

//
// MySQL-Tables
//
Und füge davor ein:

Code: Alles auswählen

if (empty($sprache))
	$sprache1 = "_de";
Danach finde:

Code: Alles auswählen

define ("MENU_TABLE", $dbprefix . "_menu");
Ersetze durch:

Code: Alles auswählen

define ("MENU_TABLE", $dbprefix . $sprache1 . "_sites");
Finde:

Code: Alles auswählen

define ("SITES_TABLE", $dbprefix . "_menu");
Ersetze durch:

Code: Alles auswählen

define ("SITES_TABLE", $dbprefix . $sprache1 . "_sites");
Finde:

Code: Alles auswählen

define ("SITE_COMMENTS_TABLE", $dbprefix . "_site_comments");
Ersetze durch:

Code: Alles auswählen

define ("SITE_COMMENTS_TABLE", $dbprefix.$sprache1 .  "_site_comments");
Finde:

Code: Alles auswählen

define ("NEWS_TABLE", $dbprefix . "_site_news");
Ersetze durch:

Code: Alles auswählen

define ("NEWS_TABLE", $dbprefix . $sprache1 . "_site_news");
Da zwei Einstellungen, bei diesem Mod überflüssig werden, können die folgenden Schritte noch ausgeführt werden.

Sind aber nicht zwingend notwendig:

Öffne die admin/admin_configuration.php ...

Und finde:

Code: Alles auswählen

$query[save_settings] = "UPDATE " . CONFIG_TABLE . " SET domain_name = '$domain_name', website_name = '$website_name', website_title = '$website_title', path = '$path', default_style = '$default_style', default_language = '$default_language', footer_title = '$footer_title', disable = '$disable', logo_url = '$logo_url', email = '$email', frontpage = '$frontpage'";
Ersetze es durch:

Code: Alles auswählen

$query[save_settings] = "UPDATE " . CONFIG_TABLE . " SET domain_name = '$domain_name', website_name = '$website_name', website_title = '$website_title', path = '$path', default_style = '$default_style', footer_title = '$footer_title', disable = '$disable', logo_url = '$logo_url', email = '$email'";
Öffne die styles/wattlaufen/admin/admin_configuration.html.

Suche und lösche:

Code: Alles auswählen

<table width="100%">
	<tr>
	   <td width="20%">{l_default_language}</td>
	   <td width="80%">
		<select name="default_language">
			{d_default_language}
		</select>
	   </td>
	</tr>
</table>

<table>
	<tr>
	   <td><div class="desc">{desc_default_language}</div></td>
	</tr>
</table>
Suche und lösche:

Code: Alles auswählen

<table width="100%">
	<tr>
	   <td width="20%">{l_frontpage}</td>
	   <td width="80%">
		<select name="frontpage">
			{d_frontpage}
		</select>
	   </td>
	</tr>
</table>

<table>
	<tr>
	   <td><div class="desc">{desc_frontpage}</div></td>
	</tr>
</table>
Zuletzt geändert von daniel am 5. Februar 2009, 22:49, insgesamt 5-mal geändert.
Flogy23
Inaktiv
Beiträge: 9
Registriert: 22. Januar 2009, 13:06
Wie bist du auf EasyHP gekommen?: Googeln :)
EasyHP Website: www.joan2000.de

Re: Sprachwechsler - Zwischen Sprachen umherschalten

Beitrag von Flogy23 »

Hi, habe den mod mal ausprobiert, und alles nach Anleitung geändert. Nur nachdem ich fertig war und meine Seite angeschaut hatte, dann war alles weg. Es waren keine menüpunkte mehr vorhanden und im Admin wurden sie auch nicht mehr angezeigt.

@ daniel: hat sich was an der version oder so geändert ? Ich würde gerne den Mod verwenden da ich viele Amerikaner kenne aber finds n bissl schade das er nicht läuft :(
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Sprachwechsler - Zwischen Sprachen umherschalten

Beitrag von daniel »

mir ist gerade folgendes aufgefallen:
Das hier ist für "Deutsch-Sie":

Code: Alles auswählen

$sprachenordner = array("german_formal", "english");
für "Deutsch-Du" bitte durch das hier ersetzen:

Code: Alles auswählen

$sprachenordner = array("german", "english");
aber das sollte nicht das Problem sein.

und für die includes/mysql.php ist das hier falsch:

Code: Alles auswählen

@include "includes/sprache.php";
@include "../sprache.php";
es sollte heißen:

Code: Alles auswählen

@include "includes/sprache.php";
@include "../includes/sprache.php";
daran sollte aber es auch nicht liegen.

bist du sicher, dass du alle Änderungen gemacht hast? (vor allem die in der includes/constants.php. und die Datenbankbefehle)
und hast du bei den Datenbankbefehlen deinen Tabbellenprefix beachtet?

wenn alles richtig ist sollte es in deiner Datenbank ungefähr so aussehen (mit dem Prefix "easyhp"):

Code: Alles auswählen

 easyhp_categories
 easyhp_config
 easyhp_de_menu
 easyhp_de_sites
 easyhp_de_site_news
 easyhp_en_menu
 easyhp_en_sites
 easyhp_en_site_news
 easyhp_guestbook
 easyhp_privmsg
 easyhp_sessions
 easyhp_site_comments
 easyhp_user
wenn alles stimmt versuche es doch mal bitte mit dem löschen oder auskommentieren von diesem code in der includes/mysql.php:

Code: Alles auswählen

@include "includes/sprache.php";
@include "../includes/sprache.php";
dann sollte die deutsche Sprache verwendet werden. funktioniert denn das?

Ich hätte es wohl erstmal als Beta kennzeichnen sollen. :oops:
Flogy23
Inaktiv
Beiträge: 9
Registriert: 22. Januar 2009, 13:06
Wie bist du auf EasyHP gekommen?: Googeln :)
EasyHP Website: www.joan2000.de

Re: Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von Flogy23 »

Hi,
danke für die schnelle Antwort. Konnte es bisher nicht ausprobieren da ich keine Zeit hatte aber werde hier nochmal reinschreiben sobald ich es nochmal getestet habe.

MFG
Flo
Flogy23
Inaktiv
Beiträge: 9
Registriert: 22. Januar 2009, 13:06
Wie bist du auf EasyHP gekommen?: Googeln :)
EasyHP Website: www.joan2000.de

Re: Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von Flogy23 »

Alsoooo... habe das gerade nochmal ausprobiert:

wenn ich die zwei Zeilen

Code: Alles auswählen

@include "includes/sprache.php";
@include "../includes/sprache.php";
auskommentiere dann wird garkein Text mehr angezeigt.

Hier mein datenbank aufbau:

Code: Alles auswählen


Anzeigen: (3 Zeilen)  easyhp_categories_de
Anzeigen: (0 Zeilen)  easyhp_categories_en
Anzeigen: (1 Zeilen)  easyhp_config
Anzeigen: (4 Zeilen)  easyhp_guestbook
Anzeigen: (25 Zeilen)  easyhp_menu_de
Anzeigen: (0 Zeilen)  easyhp_menu_en
Anzeigen: (1 Zeilen)  easyhp_privmsg
Anzeigen: (2 Zeilen)  easyhp_sessions
Anzeigen: (39 Zeilen)  easyhp_sites_de
Anzeigen: (0 Zeilen)  easyhp_sites_en
Anzeigen: (2 Zeilen)  easyhp_site_comments_de
Anzeigen: (0 Zeilen)  easyhp_site_comments_en
Anzeigen: (36 Zeilen)  easyhp_site_news_de
Anzeigen: (0 Zeilen)  easyhp_site_news_en
Hoffe das hilft beim fehler finden :)

Ach ja habe noch 2 sachen die du in deiner anfangs Anleitung ändern solltest:

1. bei

Code: Alles auswählen

RENAME TABLE `easyhp_sites` TO `easyhp_sites_de ;
fehlt ein ` und bringt deshalb einen sql error es sollte so heißen:

Code: Alles auswählen

RENAME TABLE `easyhp_sites` TO `easyhp_sites_de`;
2. es fehlt eine query für die tabelle "easyhp_categories_en"
die kann so aussehen:

Code: Alles auswählen

-- 
-- Tabellenstruktur für Tabelle `easyhp_categories_de`
-- 

CREATE TABLE `easyhp_categories_de` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=6 ;

-- 
-- Daten für Tabelle `easyhp_categories_de`
-- 
allerdings haben die ergänzungen auch nichts gebracht

irgendwelche ideen woran es noch liegen könnte??

MFG
Flo
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von daniel »

2. es fehlt eine query für die tabelle "easyhp_categories_en"
Daran liegt es vielleicht. In meinem Code, also der Originalmodifikation gab es keine verschiedenen Kategorien für Englisch und deutsch.
Da habe ich, als ich die Anleitung geschrieben habe, wohl etwas durcheinandergebracht.

entweder du nennst die Talle easyhp_categories_de wieder in easyhp_categories um:

Code: Alles auswählen

RENAME TABLE `easyhp_categories_de` TO `easyhp_categories`;
oder wenn du verschiedene Kategorien verwenden willst, musst du diese Tabellen in der includes/constants.php definieren:
also finde:

Code: Alles auswählen

define ("CATS_TABLE", $dbprefix . "_categories");
und ersetze mit:

Code: Alles auswählen

define ("CATS_TABLE", $dbprefix . $sprache1 . "_categories");
Hoffe mal das ist der Fehler.
wenn ich die zwei Zeilen[...]auskommentiere dann wird garkein Text mehr angezeigt.
also genauso wie vorher?

Und danke für den SQL-Error. habe ihn berichtigt.

MfG.: Daniel
Flogy23
Inaktiv
Beiträge: 9
Registriert: 22. Januar 2009, 13:06
Wie bist du auf EasyHP gekommen?: Googeln :)
EasyHP Website: www.joan2000.de

Re: Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von Flogy23 »

hmm nee das umbenennen der categorie table in den Ursprungszustand hat auch nichts gebracht...
Des weiteren ist mir noch was aufgefallen:
In deiner Anleitung möchtest du, das man in der "includes/constants.php." nach

Code: Alles auswählen

define ("SITES_TABLE", $dbprefix . "_menu");
sucht und dieses gegen

Code: Alles auswählen

define ("SITES_TABLE", $dbprefix . $sprache1 . "_sites");
austauscht.
Nun das "define ("SITES_TABLE", $dbprefix . "_menu");" gibt es nicht!
Es sollte vermutlich "define ("SITES_TABLE", $dbprefix . "_sites"); heißen :)

Kannst du eventuell nochmal selber die Anleitung durchgehen und auf einer Demo page das ausprobieren ? Dann kommt eventuell die Antwort von ganz alleine warum es nicht funktioniert (hat mir auch schon oft geholfen ;))

EDIT: Habe mal ein Bild vom zustand der Homepage angehängt wenn die Mod eingespielt ist.
Dateianhänge
Image1.jpg
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Sprachwechsler - Zwischen Sprachen umherschalten [BETA]

Beitrag von daniel »

Flogy23 hat geschrieben:Nun das "define ("SITES_TABLE", $dbprefix . "_menu");" gibt es nicht!
Es sollte vermutlich "define ("SITES_TABLE", $dbprefix . "_sites"); heißen :)
genau.
Flogy23 hat geschrieben:Kannst du eventuell nochmal selber die Anleitung durchgehen und auf einer Demo page das ausprobieren ? Dann kommt eventuell die Antwort von ganz alleine warum es nicht funktioniert (hat mir auch schon oft geholfen ;))
danke für den tipp. Hat mir jetzt auch geholfen. Mir ist jetzt nämlich aufgefallen, dass in der constants.php die Tabelle easyhp_de_sites heißt und die Tabelle in der Datenbank easyhp_sites_de heißt. Also genau falsch herum.
Antworten