Support » Allgemeine Fragen » Einzelne Strings in functions.php übersetzen

  • Gelöst dencks

    (@dencks)


    Hallo,

    ich habe einen Shop mit Woocommerce 2.6.8 aufgebaut:
    https://bhutanhouse.org/

    Hier habe ich auf Kundenwunsch an einigen Stellen Anpassungen direkt in der functions.php. So habe ich z.B. den Tab „Beschreibung“ in der Produktansicht in „Hinweise“ geändert durch folgenden Code:

    # Rename Tab
    add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
    function woo_rename_tabs( $tabs ) {
    $tabs['description']['title'] = __( 'Hinweise' ); // Rename the description tab
    return $tabs;
    }

    Nun fällt mir das ganze in der englischen Version auf die Füße, da hier einfach der Begriff „Hinweise“ übernommen wird und ich nicht weiß wie ich diesen nur im englischen ändern kann. Über WPML oder Loco-Translate etc. habe ich schon alles durch, ohne Erfolg,

    Mit dem an anderer Stelle beschriebenen Code-Schnipsel:

    add_filter( 'gettext', 'translate_text');

    add_filter( 'ngettext', 'translate_text');
    
    function translate_text($translated) {
    
$translated = str_ireplace('Hinweise', 'Notes, $translated);

    return $translated;

    }

    klappt das zwar, der Begriff wird geändert, dann allerdings in beiden Sprachen. Ich brauche aber natürlich eine Unterscheidung zwischen beiden Sprachversionen.

    An der Kasse habe ich ein ähnliches Problem mit einem manuell hinzugefügten „*Pflichtfleder“.

    Wie kriege ich hier eine Unterscheidung zwischend den Sprachen hin?

    Hier der Link auf die Life-Seite: https://bhutanhouse.org/
    Die englische Version bearbeite ich grade auf einer passwortgeschützten Staging-Umgebung, bei Bedarf gebe ich hier gerne Einblick.

    Danke + Grüße

    Henning

    Moderationshinweis: Codeauszeichung korrigiert. Bitte verwende doch künftig den Formatierungscode im Editor, wenn du Fragen hier im Forum eingibst. Vielen Dank, Bego

    • Dieses Thema wurde geändert vor 7 Jahren, 4 Monaten von Bego Mario Garde. Grund: Code-Formatierung korrigiert
Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Es ist nicht optimal, Änderungen direkt im Theme vorzunehmen. Spätestens beim nächsten Update werden deine Änderungen überschrieben und schon nach kurzer Zeit lässt sich auch nur mit Aufwand nachvollziehen, was du wann, wo und warum geändert hast. Deshalb würde ich Änderung nicht im Theme selbst vornehmen. Sofern du nicht ein eigenes Plugin mit kundenspezifischen Änderungen schreiben möchtest (eigentlich ein Aufwand von wenigen Minuten), kannst du für den Code das Plugin Code Snippets verwenden: neues Snippet hinzufügen, Funktion kopieren und einfügen, speichern und aktivieren.

    WordPress verwendet verschiedene Übersetzungsfunktionen, die in der Entwickler-Referenz gut dokumentiert sind. So gibt z.B. __( 'Content', 'Textdomain' ) den Textstring „Content“ bzw. seine Übersetzung entsprechend den vorhandenen Sprachdateien und der eingestellten Sprache wieder (entspricht return 'Inhalt').

    Der Begriff store kann zum Beispiel in einem Plugin als „Laden, Geschäft“ übersetzt werden, bedeutet aber im nächsten Plugin „speichern“. Die Textdomain wird verwendet, damit WordPress unterscheiden kann, welche Übersetzung verwendet werden soll. Diese Textdomain fehlt aber in deiner Funktion __( 'Hinweise' ). Welche Textdomain WooCommerce verwendet, findest du im Plugin-Header:

    <?php
    /**
     * Plugin Name: WooCommerce
     * Plugin URI: https://woocommerce.com/
     * Description: An e-commerce toolkit that helps you sell anything. Beautifully.
     * Version: 2.6.8
     * Author: WooThemes
     * Author URI: https://woocommerce.com
     * Requires at least: 4.4
     * Tested up to: 4.6
     *
     * Text Domain: woocommerce
     * Domain Path: /i18n/languages/

    Die Textdomain fügst du deiner Funktion hinzu: __( 'Some changed text', 'woocommerce' ). Danach kannst du die Übersetzung z.B. in Loco Translate bearbeiten.

    Wie du die Übersetzung auch nach Updates behältst, haben die Entwickler von WooCommerce in ihrer Dokumentation beschrieben: https://docs.woocommerce.com/document/woocommerce-localization/#making-your-translation-upgrade-safe

    Thread-Starter dencks

    (@dencks)

    Ok, danke für deine ausführliche Antowrt! Werde mich mal in Ruhe damit beschäftigen und mich bei Bedarf wieder melden.

    Schönen Abend + Grüße

    Henning

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Das Thema „Einzelne Strings in functions.php übersetzen“ ist für neue Antworten geschlossen.