%time ago
Eingetragen von Trikerdaniel (20)
am 22.04.2008 - 12:50 Uhr in
am 22.04.2008 - 12:50 Uhr in
Hi all
Ich habe mir das Modul download_count installiert.
Nun habe ich ein Problem mit der Ausgabe. Es kommt immer zuerst die Zeit und dann "ago" (Beispiel 22 Minuten 12 Sekunden ago). Wenn ich aber bei den Übersetzungen nachschaue, ist schon alles übersetzt ( vor %time ).
Wo kann ich die Ausgabe vom Download Counter übersetzen?
Danke zum voraus für Eure Hilfe
Daniel
- Anmelden oder Registrieren um Kommentare zu schreiben
Damit ein Text von der
am 22.04.2008 - 13:11 Uhr
Damit ein Text von der Drupalübersetzung übersetzt werden kann, muss der jeweilige String in der t() Funktion drin sein. Leider gibt es immer wieder Module, welche "nackte" Strings sind. Das heisst, sie sind fest codiert :(
In deinem Fall wird das wohl der Fall sein. Einzige Lösung: in den Code gehen und den entsprechenden String suchen.
Für Übersetzung eine kleine Einführung: http://www.rapsli.ch/drupal/blog/27.02.2008-kleine-einfuehrung-ins-ueber...
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
hab genau dasselbe problem.
am 12.11.2008 - 18:51 Uhr
hab genau dasselbe problem. nun habe ich das "download_count.module" mit notepad++ geöffnet und nach "ago" gesucht. Das habe ich zweimal gedunden, einmal in zeile 161 und in zeile 250.
Die code-linien sehen so aus:
zeile 161:
while ($file = db_fetch_object($result)) {
$row = array();
$row[] = $file->filename;
$row[] = $file->count;
$row[] = format_interval(time() - $file->timestamp) . ' ago';
$row[] = l(t('view ' . $file->type), 'node/' . $file->nid);
$rows[] = $row;
zeile 250:
foreach ($node->files as $file) {
if ($file->list) {
$href = $file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path()));
$text = $file->description ? $file->description : $file->filename;
$pick = db_query("SELECT filename, count, timestamp FROM {file_downloads} WHERE CONCAT('%s', filename) = '%s'", $fileDirectoryPath, $file->filepath);
if ($attach = db_fetch_object($pick)){
$count = $attach->count;
$last = format_interval(time() - $attach->timestamp) . ' ago';
}
else {
$count = 0;
$last = t('Not yet downloaded');
}
if (user_access('view uploaded files')) {
$rows[] = array(l($text, $href), format_size($file->filesize), $count, $last);
}
else {
$rows[] = array($file->filename, format_size($file->filesize), $count, $last);
}
}
Wenn ich da jetzt die beiden "ago" durch "vor" ersetze, würde ja das "vor" hinter der zeitanagbe sein (also z.B.: 1 Tag 5 Minuten vor". Wie schreibe ich das ganze nun um dass das "vor" vor der Zeitangabe steht?(also so: "vor 1 Tag 5 Stunden"). Ich kenne mich da leider noch nicht so aus, wäre echt nett wenn mir da jemand schnell auf die sprünge helfen könnte!
vielen dank
mfg
Teil1: $row[] =
am 12.11.2008 - 19:01 Uhr
Teil1:
$row[] = format_interval(time() - $file->timestamp) . ' ago';
wird zu
$row[] = ' vor ' . format_interval(time() - $file->timestamp);
und in Teil 2 muß es dann heißen:
$last = ' vor ' . format_interval(time() - $attach->timestamp);
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
t('ago')
am 12.11.2008 - 19:06 Uhr
<?php
$row[] = $file->count;
$row[] = t('ago') . ' ' . format_interval(time() - $file->timestamp);
?>
<?php
if ($attach = db_fetch_object($pick)){
$count = $attach->count;
$last = t('ago') . ' ' . format_interval(time() - $attach->timestamp);
?>
Nach dem der Code so geaendert ist die Anzeige mit solch einem Datum 1 x aufrufen/anzeigen lassen. Danach sollte "ago" in der Lokalisierung uebersetzbar sein.
PS
Mach es NICHT so wie von wla gepostet. Das ist unsauberer Drupal Style.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
@wla, von der t() Funktion
am 12.11.2008 - 19:08 Uhr
@wla,
von der t() Funktion hast Du noch nichts gehoert. Oder?
Bedenklich zumal rapsli hier in diesem Thread davon gesprochen hat!
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
quiptime schrieb von der
am 12.11.2008 - 19:31 Uhr
von der t() Funktion hast Du noch nichts gehoert. Oder?
Auch Murks nur mit der t(). Meiner Meiner nach wäre sauber wie es actions macht:
<?php
watchdog('actions', format_plural($count, 'One orphaned action (%orphans) exists in the actions table. !link', '@count orphaned actions (%orphans) exist in the actions table. !link'), array('@count' => $count, '%orphans' => $orphans, '!link' => $link), WATCHDOG_WARNING);
?>
"Removed orphaned action '%action' from database."
"Die verwaiste Aktion ‚%action‘ wurde aus der Datenbank entfernt."
Also eine Übersetzung in der Übersetzung
<?php
$row[] = t('ago') . ' ' . format_interval(time() - $file->timestamp);
?>
wäre dann sowas wie
<?php
$row[] = t('ago %timeago');
?>
See you at http://drupalcamp.de/
quiptime schrieb Nach dem
am 12.11.2008 - 20:30 Uhr
Nach dem der Code so geaendert ist die Anzeige mit solch einem Datum 1 x aufrufen/anzeigen lassen. Danach sollte "ago" in der Lokalisierung uebersetzbar sein.
vielen dank, habs genauso gemacht und konnte nach der codeänderung in der de.po das ago in vor ändern. vielen dank nochmals!
mfg
Nur mal nachgefragt...
am 13.11.2008 - 09:04 Uhr
Wie stellt man nun sicher, dass bei einer Multi-lang Seite "ago" zum Sufix wird und "vor" zum Präfix?
Ist das in diesem Code versteckt? Ich glaube nicht! Wäre dan also auch nur etwas weniger Murks.
<?php
$row[] = t('ago %timeago');
?>
Gruss Roger
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
@quiptime
am 13.11.2008 - 10:18 Uhr
Ich halte viel von Deinen Kenntnissen, aber hier sage ich:
Komm runter von Deinem hohen Roß und wieder auf den Boden!
Ich kenne die t()-Funktion sehr wohl, aber die greift doch hier nicht. Eine simple tabellengetriebene Übersetzung kann bei Sprachkonstrukten nicht funktionieren. Wenn man wirklich das Problem verallgemeinern will für eine Lokalisierung brauch man eine Funktion in der Art
_lc_('english text with argument positiones', <Start with a Capital letter>, arg1, arg2,....)
Der Text könnte sogar in derselben Tabelle stehen, müßte aber nachgearbeitet werden, damit die Ergenisse an die richtigen Stellen kommen.
z.B. "15 minutes ago" müßte im Deutschen heißen "vor 15 Minuten"
Aufruf der Fuktion:
_lc_('%1 minutes ago' , false, <Term with result 15>)
In die Übersetzung für Deutsch gehörte dann: "vor %1 Minuten".
Vielleicht sollten wir uns dafür mal stark machen.
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Vorschlag
am 13.11.2008 - 10:44 Uhr
Warum geht man nicht einfach den unterschiedlichen gramatikalischen Regeln aus dem weg und verwendet, stattdessen folgende Variante?
de =: heute, hh:mm Uhr
en =: today, hh:mm h
und evtl. noch das selbe Konstrukt für gestern.
Wenn man schon Unterschiede machen will, für Dinge die noch nicht so lange vorbei sind?
Oder sonst einfach nur das Datum nehmen.
Gruss Roger
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
%time ago -> format_plural()
am 13.11.2008 - 11:28 Uhr
@wla,
ich bin nur kurz auf die Fragestellung eingegangen. Wenn ich etwas deutlich geworden bin hat das wohl weniger mit dem hohen Ross zu tun.
Wenn man das Problem mit dem Plural loesen moechte reicht die Anwendung der t() Funktion nicht. Insofern ist ein Aenderung des Modules download_count notwendig. Denn an dieser Stelle haette der Entwickler format_plural() verwenden koennen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.