Dies ist das technische Support-Forum für WPML - das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team beantwortet Anfragen im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Schlagwörter: 

This topic contains 1 Antwort, has 2 Teilnehmer.

Last updated by Cristina vor 1 Jahr, 5 Monate.

Assigned support staff: Cristina.

Autor Beiträge
Mai 5, 2018 um 8:52 pm #1993959

monikaG-3

Unter String Translations fehlen mir ein paar Strings aus einer Child Theme-Datei (function.php). Ich habe dort eine Funktion selbst hinzugefügt.

Es sind Shortcodes mit einigen kleinen HTML-Textteilen auf Deutsch, da die Site anfangs nur einsprachig geplant war. Ich könnte ja auch die functions.php abändern und diese deutschen Textteile entfernen, aber diese Funktion ist auf vielen Seiten im Einsatz, deshalb wäre ich froh, diese Wörter und Sätze über String Translations übersetzen zu können.

Ein Beispiel einer dieser Funktionen:
function shortcode_tourpreis( $atts ){ $post_id = get_the_ID(); $person_price = get_post_meta( $post_id, '_tour_price', true ); if ( empty( $person_price ) ) $person_price = 0; return '<p class="price_single_main">Preis pro Person:  ' . ct_price( $person_price, "special" ) . '</p>';}add_shortcode( 'tourpreis', 'shortcode_tourpreis' );

Hier sollte ich Preis pro Person übersetzen können.

Da ich unter String Translations nichts gefunden habe, habe ich unter Theme- und Plugin Lokalisierung nochmals die Themes durchkämmt, und dort erscheint meine gewünschte Datei wp-content/themes/citytours-creakzent-child/functions.php (siehe Screenshot).

Was kann ich tun, um diese Strings aufzunehmen?

Vielen Dank!

Mai 7, 2018 um 12:38 pm #2011606

Cristina

Hallo Monika,

vielen Dank für Ihre Anfrage und entschuldigen Sie die Wartezeit, das deutsche Forum ist am Wochenende nicht besetzt.

Damit Strings im Plugin von WPML als übersetzbar erkannt und gescannt werden können, müssen sie in eine gettext-Funktion integriert werden.

Die gettext-Funktion umhüllt einen String mit __("text", "text-domain");

Damit wird der "text" übersetztbar gemacht und ist einer "text-domain" zugeordnet, die z.B. das Plugin oder Theme bezeichnet, in dem sich dieser Text innerhalb einer Datei dieses Themes oder Plugins befindet.

mit Gettext wäre der Output in dem Code dann so etwas:


{
...<?php echo esc_attr__("Preis pro Person","mein_theme");?>
....
}

...

Bei statischen Strings, die in Themes, Formularen, Widgets oder auch Placeholdern stehen, müssen die Texte mit gettext geschrieben werden.

Abhängig vom Kontext nutzt man verschiedene Schreibweisen, damit der Text nicht nur übersetzt wird, sondern auch online erscheint.

Da gibt es diese Möglichkeiten:

__('string','text-domain')
_e('string', 'text-domain')
esc_html__('string','text-domain')
esc_attr__('string','text-domain')

Je nachdem, was bei Ihnen besser funktioniert, wäre es dann so etwas wie:

 
...
return '<p class="price_single_main">'.esc_html__('Preis pro Person:  ','mein-theme')'. ct_price( $person_price, "special" ) . '</p>';
...

Hier noch einige Hilfs- und Dokumentationsseiten dazu:

https://wpml.org/de/faq/so-funktioniert-string-ubersetzung/

https://wpml.org/documentation/support/making-woocommerce-themes-multilingual-and-multi-currency-ready/

https://wpml.org/de/faq/warum-erscheinen-string-ubersetzungen-nicht/

https://wpml.org/de/2009/06/lokalisierung-der-wordpress-themes/

https://codex.wordpress.org/I18n_for_WordPress_Developers

Abgesehen davon, sehe ich, dass laut Ihren beigefügten Debug-Infos nutzen Sie nur 40 M Arbeitsspeicher für Ihre WordPress Installation.

Um Ihren Arbeitsspeicher an die Mindestanforderungen anzupassen, können Sie folgende Zeilen der Datei wp-config.php hinzufügen. Die Datei befindet sich im Root-Verzeichnis Ihres WordPress und die beiden Zeilen können direkt vor der Zeile mit dem Text “happy blogging” hinzugefügt werden.

define('WP_MEMORY_LIMIT', '256M');
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

Damit werden die WPML und WCML Prozesse genügend Arbeitsspeicher besitzen, um störungsfrei zu arbeiten.

MfG,

Cristina

Das Thema „[Geschlossen] Fehlende Strings aus Child Theme“ ist für neue Antworten geschlossen.