Tutorial für: dolph-in-forum.de 2010 by deeboo
PDF erhältlich unter: Tutorial als PDF
Anleitung zum ändern der Ein- / Mehrzalanzeige
Hinweis zur Nutzung dieses Dokuments:
Dieses Dokument zeigt einen Workaround auf, welcher nicht zwangsläufig richtig oder vollständig sein muss. Dieser wurde auf pxlartists.de getestet und führte dort zum Erfolg. Aufgrund der Vielfältigkeit der Systeme kann es immer zu unvorhersehbaren Auswirkungen kommen. Insbesondere, wenn andere Extensions/ Erweiterungen im Einsatz sind. Aus diesem Grund empfehle ich immer im Vorfeld ein Fullbackup zu erstellen. Für Datenverluste und sonstige Schäden, die durch Außerachtlassen dieser empfohlenen Sorgfalt entstehen, übernehme ich keine Haftung.
Problemstellung:
Jeder, der Dolphin in deutscher und englischer Sprache fährt, steht über kurz oder lang vor dem Problem, dass in der deutschen Sprachversion bei der Mehrzahl von Stunde nicht Stunden sondern Stundes angezeigt wird.
So auch bei Minute. Statt Minuten wird hier Minutes angezeigt.
Hintergrund des Problems:
Verantwortlich ist hier die Datei util.inc.php aus dem inc Verzeichnis.
In der Funktion „function _format_when ($iSec)“ (ca. Zeile 584 ff) wird nur auf die englische Sprache Rücksicht genommen. d.h. Dolphin merkt, dass es sich z.B. um mehrere Stunden handelt und zeigt die Mehrzahl. Im Englischen hour + s = hours
Codeauszug:
### snap ###
…
: _t('_x_minute_ago', $i, 's');
…
### snap ###
Das ist natürlich im deutschen blöd, da für die Mehrzahl ein „n“ dran gehangen werden müsste.
Was könnte man also tun, um es richtig oder besser zu gestalten?
Falsch: nicht einfach das „s“ gegen ein „n“ tauschen.
Denn dann hätte man im englischen des Problem der „minuten“ statt „minutes“…
Da ich nicht wusste, wie man die Sprache abfängt habe ich nach einem Tipp von thomasp und modmysite (danke nochmal an dieser Stelle) folgende Lösung „ausgearbeitet“ & umgesetzt.
Schritt 1) Keys ändern und neue erstellen
Um im Backend die Sprachkeys zu verwalten ruft bitte folgenden Punkt auf:
„Einstellungen > Sprachen > Sprachkeys verwalten“ (siehe Screenshot01)
Screenshot01
Wir werden nun nach und nach folgende Keys ändern:
_x_minute_ago
_x_hour_ago
_x_day_ago
_in_x_minute
_in_x_hour
_in_x_day
Zudem werden wir folgende Keys erstellen:
_x_minutes_ago
_x_hours_ago
_x_days_ago
_in_x_minutes
_in_x_hours
_in_x_days
Suchen wir nun nach unserem ersten Wert: _x_minute_ago
Mit dem Setzen des Haken in “suche” (Screenshot01) wird dieser angezeigt.
Diesen nun bearbeiten. Es erscheint folgendes Fenster (Screenshot 02):
Screenshot02
Wir löschen nun die {1} raus und speichern ab. Das machen wir mit allen oben genannten vorhandenen Werten.
Somit wird unser „s“ nicht mehr angehangen. Aber wir benötigen ja die Mehrzahl.
Dafür erstellen wir genauso viele neue Werte. In unserem Fall 6 Stück an der Zahl. (siehe oben)
Wir klicken auf Sprachkey hinzufügen und tragen z.B. folgenden Namen ein:
_x_minutes_ago
Als Werte tagen wir nun die Mehrzahl ein. z.B (siehe Screenshot):
String für Englisch => {0} minutes ago
String für deutsch => vor {0} Minuten
Hinweis: Namen und Werte der hinzugefügten Sprachkeys:
_x_minutes_ago
String für Englisch => {0} minutes ago
String für deutsch => vor {0} Minuten
_x_hours_ago
String für Englisch => {0} hours ago
String für deutsch => vor {0} Stunden
_x_days_ago
String für Englisch => {0} days ago
String für deutsch => vor {0} Tagen
_in_ x_minutes
String für Englisch => in {0} minutes
String für deutsch => in {0} Minuten
_in_ x_hours
String für Englisch => in {0} hours
String für deutsch => in {0} Stunden
_in_ x_days
String für Englisch => in {0} days
String für deutsch => in {0} Tagen
2) Ändern der util.inc.php Datei
Damit die Änderungen auch zum Erfolg führen ändern wir das Script util.inc.php ab. Dieses liegt im inc Ordner.
ca. Zeile 584 ff vorher:
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minute_ago', $i, 's');
Geänderte Zeile nachher:
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minutes_ago', $i);
vollständiges Listing:
### snap ###
…
function _format_when ($iSec) {
$s = '';
if ($iSec>0) {
if ($iSec < 3600) {
$i = round($iSec/60);
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minutes_ago', $i);
} else if ($iSec < 86400) {
$i = round($iSec/60/60);
$s .= (0 == $i 1 == $i) ? _t('_x_hour_ago', '1') : _t('_x_hours_ago', $i);
} else {
$i = round($iSec/60/60/24);
$s .= (0 == $i 1 == $i) ? _t('_x_day_ago', '1') : _t('_x_days_ago', $i);
}
} else {
if ($iSec > -3600) {
$i = round($iSec/60);
$s .= (0 == $i 1 == $i) ? _t('_in_x_minute', '1') : _t('_in_x_minutes', -$i);
} else if ($iSec > -86400) {
$i = round($iSec/60/60);
$s .= (0 == $i 1 == $i) ? _t('_in_x_hour', '1') : _t('_in_x_hours', -$i);
} elseif ($iSec < -86400) {
$i = round($iSec/60/60/24);
$s .= (0 == $i 1 == $i) ? _t('_in_x_day', '1') : _t('_in_x_days', -$i);
}
}
return $s;
}
…
### snap ###
Danach Cache leeren und freuen.
Für Hinweise Anregungen kontaktiert mich bitte.
PDF erhältlich unter: Tutorial als PDF
Anleitung zum ändern der Ein- / Mehrzalanzeige
Hinweis zur Nutzung dieses Dokuments:
Dieses Dokument zeigt einen Workaround auf, welcher nicht zwangsläufig richtig oder vollständig sein muss. Dieser wurde auf pxlartists.de getestet und führte dort zum Erfolg. Aufgrund der Vielfältigkeit der Systeme kann es immer zu unvorhersehbaren Auswirkungen kommen. Insbesondere, wenn andere Extensions/ Erweiterungen im Einsatz sind. Aus diesem Grund empfehle ich immer im Vorfeld ein Fullbackup zu erstellen. Für Datenverluste und sonstige Schäden, die durch Außerachtlassen dieser empfohlenen Sorgfalt entstehen, übernehme ich keine Haftung.
Problemstellung:
Jeder, der Dolphin in deutscher und englischer Sprache fährt, steht über kurz oder lang vor dem Problem, dass in der deutschen Sprachversion bei der Mehrzahl von Stunde nicht Stunden sondern Stundes angezeigt wird.
So auch bei Minute. Statt Minuten wird hier Minutes angezeigt.
Hintergrund des Problems:
Verantwortlich ist hier die Datei util.inc.php aus dem inc Verzeichnis.
In der Funktion „function _format_when ($iSec)“ (ca. Zeile 584 ff) wird nur auf die englische Sprache Rücksicht genommen. d.h. Dolphin merkt, dass es sich z.B. um mehrere Stunden handelt und zeigt die Mehrzahl. Im Englischen hour + s = hours
Codeauszug:
### snap ###
…
: _t('_x_minute_ago', $i, 's');
…
### snap ###
Das ist natürlich im deutschen blöd, da für die Mehrzahl ein „n“ dran gehangen werden müsste.
Was könnte man also tun, um es richtig oder besser zu gestalten?
Falsch: nicht einfach das „s“ gegen ein „n“ tauschen.
Denn dann hätte man im englischen des Problem der „minuten“ statt „minutes“…
Da ich nicht wusste, wie man die Sprache abfängt habe ich nach einem Tipp von thomasp und modmysite (danke nochmal an dieser Stelle) folgende Lösung „ausgearbeitet“ & umgesetzt.
Schritt 1) Keys ändern und neue erstellen
Um im Backend die Sprachkeys zu verwalten ruft bitte folgenden Punkt auf:
„Einstellungen > Sprachen > Sprachkeys verwalten“ (siehe Screenshot01)
Screenshot01
Wir werden nun nach und nach folgende Keys ändern:
_x_minute_ago
_x_hour_ago
_x_day_ago
_in_x_minute
_in_x_hour
_in_x_day
Zudem werden wir folgende Keys erstellen:
_x_minutes_ago
_x_hours_ago
_x_days_ago
_in_x_minutes
_in_x_hours
_in_x_days
Suchen wir nun nach unserem ersten Wert: _x_minute_ago
Mit dem Setzen des Haken in “suche” (Screenshot01) wird dieser angezeigt.
Diesen nun bearbeiten. Es erscheint folgendes Fenster (Screenshot 02):
Screenshot02
Wir löschen nun die {1} raus und speichern ab. Das machen wir mit allen oben genannten vorhandenen Werten.
Somit wird unser „s“ nicht mehr angehangen. Aber wir benötigen ja die Mehrzahl.
Dafür erstellen wir genauso viele neue Werte. In unserem Fall 6 Stück an der Zahl. (siehe oben)
Wir klicken auf Sprachkey hinzufügen und tragen z.B. folgenden Namen ein:
_x_minutes_ago
Als Werte tagen wir nun die Mehrzahl ein. z.B (siehe Screenshot):
String für Englisch => {0} minutes ago
String für deutsch => vor {0} Minuten
Hinweis: Namen und Werte der hinzugefügten Sprachkeys:
_x_minutes_ago
String für Englisch => {0} minutes ago
String für deutsch => vor {0} Minuten
_x_hours_ago
String für Englisch => {0} hours ago
String für deutsch => vor {0} Stunden
_x_days_ago
String für Englisch => {0} days ago
String für deutsch => vor {0} Tagen
_in_ x_minutes
String für Englisch => in {0} minutes
String für deutsch => in {0} Minuten
_in_ x_hours
String für Englisch => in {0} hours
String für deutsch => in {0} Stunden
_in_ x_days
String für Englisch => in {0} days
String für deutsch => in {0} Tagen
2) Ändern der util.inc.php Datei
Damit die Änderungen auch zum Erfolg führen ändern wir das Script util.inc.php ab. Dieses liegt im inc Ordner.
ca. Zeile 584 ff vorher:
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minute_ago', $i, 's');
Geänderte Zeile nachher:
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minutes_ago', $i);
vollständiges Listing:
### snap ###
…
function _format_when ($iSec) {
$s = '';
if ($iSec>0) {
if ($iSec < 3600) {
$i = round($iSec/60);
$s .= (0 == $i 1 == $i) ? _t('_x_minute_ago', '1') : _t('_x_minutes_ago', $i);
} else if ($iSec < 86400) {
$i = round($iSec/60/60);
$s .= (0 == $i 1 == $i) ? _t('_x_hour_ago', '1') : _t('_x_hours_ago', $i);
} else {
$i = round($iSec/60/60/24);
$s .= (0 == $i 1 == $i) ? _t('_x_day_ago', '1') : _t('_x_days_ago', $i);
}
} else {
if ($iSec > -3600) {
$i = round($iSec/60);
$s .= (0 == $i 1 == $i) ? _t('_in_x_minute', '1') : _t('_in_x_minutes', -$i);
} else if ($iSec > -86400) {
$i = round($iSec/60/60);
$s .= (0 == $i 1 == $i) ? _t('_in_x_hour', '1') : _t('_in_x_hours', -$i);
} elseif ($iSec < -86400) {
$i = round($iSec/60/60/24);
$s .= (0 == $i 1 == $i) ? _t('_in_x_day', '1') : _t('_in_x_days', -$i);
}
}
return $s;
}
…
### snap ###
Danach Cache leeren und freuen.
Für Hinweise Anregungen kontaktiert mich bitte.
Der Fuchs ist schlau und stellt sich dumm, bei manchen ist es andersrum.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von deeboo ()