Englische Texte in einem Block durch Deutsche ersetzen ?
am 06.07.2010 - 15:22 Uhr in
Es gibt ein Modul donation-thermometer dort werden im Layout manche Begriffe nur
in Englisch dagestellt. Wie macht man diese übersetzbar oder mehrsprachig?
Beispiel:
<div class="donations_thermometer"> */
$block['content'] = theme('donations_thermometer', $amount, $target, $currency, $size);
return $block;Ich würde gerne 'donations_thermometer' übersetzen, wie geht das am besten, wenn ich
es nicht einfach editieren will, sondern mit der passenden Funktion versehen?
Gruss
Katasun
- Anmelden oder Registrieren um Kommentare zu schreiben

Wenn du das Core-Modul
am 06.07.2010 - 18:07 Uhr
Wenn du das Core-Modul "Locale" installiert hast, kannst du mal admin/build/translate aufrufen, dort auf "Suchen" klicken, den gewünschten String suchen und übersetzen.
Übersetzung
am 06.07.2010 - 20:41 Uhr
Ich würde gerne 'donations_thermometer' übersetzen
Das wird Dir hier nicht wirklich etwas bringen, da "donations_thermometer" Teil eines Funktionsnamens ist (
theme_donations_thermometer, siehe donations_thermometer.module Zeile 89).Und ein Funktionsname lässt sich nunmal nicht übersetzen (und das ist auch gut so).
Nur Texte, die mit der [api:t|-Funktion ausgegeben werden, können übersetzt werden (mal abgesehen von "string overrides").
Beispiel:
<?php print t('translatable text'); ?>hth,
Stefan
stBorchert schrieb katasun
am 06.07.2010 - 21:04 Uhr
Ich würde gerne 'donations_thermometer' übersetzen
Das wird Dir hier nicht wirklich etwas bringen, da "donations_thermometer" Teil eines Funktionsnamens ist (
theme_donations_thermometer, siehe donations_thermometer.module Zeile 89).Und ein Funktionsname lässt sich nunmal nicht übersetzen (und das ist auch gut so).
Nur Texte, die mit der [api:t|-Funktion ausgegeben werden, können übersetzt werden (mal abgesehen von "string overrides").
Beispiel:
<?php print t('translatable text'); ?>hth,
Stefan
Erstmal Schande über mich, da habe ich den Falschen Code gepostet, aber dafür kann ich die Frage genauer formulieren,
Wie kann ich Texte, die nicht mit [api:t] erstellt sind, so verändern, das diese auch bei den Übersetzungen erscheinen.
Ich habe die Übersetzungfunktion genutzt und logischerweise werden genau die Teile ohne [api:t] nicht angezeigt. Wie
kann ich auch diese Sprachelemente so kennzeichnen oder verändern, dass diese mit der Übersetzungsfunktion genutzt
werden können?
Danke
Katasun
String Overrides
am 06.07.2010 - 21:43 Uhr
Probier mal [do:stringoverrides String Overrides].
[gelöst] String Overrides
am 07.07.2010 - 09:52 Uhr
Danke, habe ich probiert.
Dann habe ich mir die API durchgelesen und die Beispiele. Mein Verständnisproblem war, das nur
Texte mit t() übersetzt werden können, die als Variablen definiert sind.
Es war also nötig, die einfachen Texte in Variablen umzuwandeln. Dann funktionieren auch alle
Übersetzungsfunktionen von Drupal.
Beispiel für den nächsten:
function theme_donations_thermometer($amount, $target, $currency, $size = 'large') {
drupal_add_js(drupal_get_path('module', 'donations_thermometer') .'/donations_thermometer.js');
drupal_add_css(drupal_get_path('module', 'donations_thermometer') .'/donations_thermometer.css');
$percent = ($amount/$target)*100;
$current_amount = 'Current Amount';
$targettext = 'Ziel';
return '<div class="donations_thermometer">
<div class="gauge-' . $size . '">
<div class="current-value" id="campaign-progress-current" style="height:'. $percent .'%;">
<p>'. $percent .'% </p>
</div>
</div>
<p><span class="donations_thermometer-label"> ' . t($current_amount) . ':</span><span class="donations_thermometer-amount"> '. $currency . $amount .'</span></p><p><span class="donations_thermometer-label"> ' . t($targettext) . ':</span><span class="donations_thermometer-amount"> '. $currency . $target .'</span></p></div>';
}
Ich habe zwei Variablen eingeführt,
$current_amount = 'Current Amount';
$targettext = 'Ziel';
und kann diese dann unter:
. t($current_amount) .und
. t($targettext) .ansprechen und diese erscheinen dann auch bei den Übersetzungen.
Katasun
katasun schrieb ... .
am 07.07.2010 - 10:28 Uhr
...
. t($current_amount) .Uh, bitte nicht so.
Texte kommen direkt als Text in die Funktion, nicht als Variable. Falls es variable Texte sein sollen, kannst Du Platzhalter verwenden:
<?phpprint t('Value: !fixed_value, %emphased, ...', array('!fixed_value' => $current_amount, '%emphased' => $targettext);
?>
Stefan