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
Sprachemmischmasch nach der Installation
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:
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:
2. function i18nInit durch
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).
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>";
?>
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);
}
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;
}
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).
Sprachproblem im Backend
Hallo emergence,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).
dein Lösungsansatz funktioniert bei mir (Version 4.5.2) nicht. Muß dort die Änderung anders lauten?
Schappo
punkt 2 muss nicht mehr geändert werden...
punkt 1 würde so aussehen..
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)