Sprachemmischmasch nach der Installation

Gesperrt
Idrian
Beiträge: 30
Registriert: Mo 29. Sep 2003, 14:44
Kontaktdaten:

Sprachemmischmasch nach der Installation

Beitrag von Idrian » Mo 29. Sep 2003, 14:50

Hallo,

nach erfolgreicher Installation von Contenido 4.3 Beta habe ich folgendes Problem:

obwohl die Sprache auf deutsch eingestellt ist habe ich trotzdem noch englische Fragmente im Admin Bereich, zb. die Alternate Texte der kleinen Grafiken oder aber die Rubrikenbeschreibungen in den Tabellen von z.B. Artikel/Eigenschaften.

Dort sind beschriftet mit Title, created, Last modified usw.

Kann mir jemand sagen woran das liegen könnte?

Idrian

emergence
Beiträge: 10600
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 30. Sep 2003, 12:18

unglaublich aber war, ja kann ich... version 4.3.2.1b
hatte dieses problem erst gestern bei einem provider gefunden..

hier ein php script zum testen der provider konfiguration:

Code: Alles auswählen

<?
$language = 'de_DE'; // Sprache
putenv ("LANG=$language"); // Umgebungsvariable setzten
setlocale(LC_ALL , ""); // LC_ALL auf Umgebungsvariable LANG setzen.

echo "Umgebungsvariable:".getenv("LANG")."<br>\nsetLocal:".setlocale(LC_ALL, 0);

echo "<pre>Auswählbare Zeichensätze:\n";
$filename = "locale -a"; // welche Zeichensätze stehen zur Verfügung
system($filename,$output);
echo "</pre>";

echo "<pre>Aktuelle Config:\n";
$filename = "locale"; // rat mal
system($filename,$output);
echo "</pre>";

?>
zur erklärung: wenn der wert bei setLocal auf C oder POSIX steht, liefert die
funktion nur den string ohne konvertierung zurück...
die funktion gettext (auch wenn sie der provider unterstützt) liefert hiebei keine übersetzung zurück.

so blöd es auch kling es ist ein konfigurations problem des providers

bei den verzeichnissen
/etc/locale.alias
oder
/usr/share/locale/locale.alias
wird bei deinem provider nur C oder POSIX eingetragen sein.
der provider sollte die anderen pakete dazu installieren zB de_DE, en_US etc.
wichtig ist noch sobald dies gemacht wurde, muss der apache server neu gestartet werden, da ansonsten gettext die änderung nicht übernimmt !!!

eine andere möglichkeit gibt es leider sonst nicht gettext zum laufen zu bekommen.

sollte dein provider diese änderungen nicht durchführen bleibt dir nichts anderes übrig als 2 änderung in der datei contenido/includes/functions.i18n.php vorzunehmen:
(nachteil: die preformance leidet teilweise extrem darunter)

1 . die function i18n durch folgendes ersetzen:

Code: Alles auswählen

function i18n ($string)
{
	global $cfg, $i18nLanguage;

//	if (function_exists("gettext"))
//	{
//		return gettext($string);
//	}

	return i18nEmulateGettext($string);

}
2. function i18nInit durch

Code: Alles auswählen

function i18nInit ($localePath, $langCode)
{
	global $i18nLanguage;

    if (!$langCode) $langCode ="de_DE";

	if (function_exists("bindtextdomain"))
	{
    	/* Bind the domain "contenido" to our locale path */
    	bindtextdomain("contenido", $localePath);

    	/* Set the default text domain to "contenido" */
    	textdomain("contenido");

    	/* Half brute-force to set the locale. */
    	if (!ini_get("safe_mode"))
    	{
    		putenv("LANG=$langCode");
    	}
    	setlocale(LC_ALL, $langCode);
	}

	$i18nLanguage = $langCode;

}
zur erklärung:
1 änderung überspringt die verwendung von gettext (wurde einfach auskommentiert)
2 änderung sorgt nur dafür dass der wert von $i18nLanguage auch wirklich jedesmal gesetzt wird (zB auf de_DE).

Idrian
Beiträge: 30
Registriert: Mo 29. Sep 2003, 14:44
Kontaktdaten:

Beitrag von Idrian » Di 30. Sep 2003, 12:53

Hey,

du bist ein Gott. Ich hab mir schon einen Wolf gesucht nach der Ursache. Da soll erst mal jemand drauf kommen! Aber jetzt klappt es. Das gute war, der Provider sitzt mir gegenüber :)
Von daher ging alles ganz fix und es funzt.

Vielen Dank für den Tip!

Schappo
Beiträge: 26
Registriert: Mo 19. Jan 2004, 08:47
Wohnort: Nordwalde NRW
Kontaktdaten:

Sprachproblem im Backend

Beitrag von Schappo » Di 9. Nov 2004, 13:59

emergence hat geschrieben: zur erklärung:
1 änderung überspringt die verwendung von gettext (wurde einfach auskommentiert)
2 änderung sorgt nur dafür dass der wert von $i18nLanguage auch wirklich jedesmal gesetzt wird (zB auf de_DE).
Hallo emergence,
dein Lösungsansatz funktioniert bei mir (Version 4.5.2) nicht. Muß dort die Änderung anders lauten?
Schappo

emergence
Beiträge: 10600
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 9. Nov 2004, 14:13

punkt 2 muss nicht mehr geändert werden...

punkt 1 würde so aussehen..

Code: Alles auswählen

function i18n ($string, $domain = "contenido")
{
	global $cfg, $i18nLanguage;
	
	if ($i18nLanguage == "he_SS")
	{
		return i18nEmulateGettext($string, $domain);
	}
	
//	if (function_exists("dgettext"))
//	{
//		if ($domain != "contenido")
//		{
//			$translation = dgettext($domain, $string);
//			return ($translation);
//		} else {
//			return gettext($string);
//		}
//	}
	
	return i18nEmulateGettext($string, $domain);
	
	
}
*** make your own tools (wishlist :: thx)

Schappo
Beiträge: 26
Registriert: Mo 19. Jan 2004, 08:47
Wohnort: Nordwalde NRW
Kontaktdaten:

Beitrag von Schappo » Di 9. Nov 2004, 17:43

Genial - hat geklappt
:D
Was würde ich nur ohne diese Forum machen.

Danke emergence

Patzor
Beiträge: 45
Registriert: Mi 25. Mai 2005, 13:26
Kontaktdaten:

Beitrag von Patzor » Mo 1. Aug 2005, 16:53

Danke für den Quellcode, den mein Provider kann den Server nicht - er will es nicht - neustarten.

Gesperrt