Textdomäne & Sprache des Themas. PO-Datei funktioniert nicht
-
-
Checken Sieeinfachein,um zu sehen,ob Ihr Problembehobenist.Wennmeine Lösung verwendet wird,akzeptieren Siebitte meine Antwort,wennmeine Lösunggeholfen hat. Wennnicht,lassen Sieesmich wissenJust checking in to see if your problem is resolved. If it is using my solution, please accepting my answer if my solution helped, if not, let me know
- 0
- 2014-03-17
- Pieter Goosen
-
3 Antworten
- Stimmen
-
- 2014-03-12
Nachdemich Ihr Thema überprüft habe,habeichmir Folgendes ausgedacht. Ich habemirerlaubt,auch Rubens Lösungeinzubeziehen,um diese Antwort so vollständig wiemöglich zumachen.
Hiergibt esmehrere Probleme:
Nummer 1.
load_theme_textdomain ('transparent',get_template_directory_uri (). '/Languages');
sollte sein:
Funktiontransparent_theme_setup () { load_theme_textdomain ('transparent',get_template_directory (). '/Languages'); $ locale=get_locale (); $ locale_file=get_template_directory (). "/languages/$locale.php"; if (is_readable ($ locale_file)) { require_once ($ locale_file); }} }} add_action ('after_setup_theme','transparent_theme_setup');
Sprachdateienmüssenimmerim Hook
after_setup_theme
aufgerufen werden.Auch
get_template_directory_uri()
sollte
seinget_template_directory ()
.Nummer 2.
& lt ;?phpecho __ ("Dankefür Ihren Besuch",'transparent'); >
.ist völligfalsch. Erstens,verwenden Sieniemals
"
in einer Übersetzungszeichenfolge. Der Übersetzererkennt sienicht und überspringt diese Zeichenfolge. Verwenden Sieimmer'
. Zweitens verwenden Sienichtecho
eine Zeichenfolgemitecho
._e
solltein diesem Fall verwendet werden. Ihre Zeichenfolge sollte alsofolgendermaßen aussehen:& lt ;?php _e ('dankefür den Besuch','transparent'); >
.Nummer 3. In der Kopfzeile Ihres Stylesheetsist keine Textdomänefestgelegt. Fügen Sie
Text Domain:transparent
direkt über dem schließenden*/
in Ihrer Kopfzeile hinzu. Ihr Header sollte alsofolgendermaßen aussehen:/* Themenname: Transparent Themen-URI: http://websitetechnology.com.au/category/themes/transparent/ Beschreibung: Transparentes,ansprechendes zweispaltiges Thema. Tags:grün,zweispaltig,rechte Seitenleiste Verfasser: Steven Doig Autoren-URI: http://tech.doig.com.au Lizenz: GNU General Public License v2 oder höher Lizenz-URI: http://www.gnu.org/licenses/gpl-2.0.html Version: 1.2 Textdomäne:transparent */
Nummer 4. Die Benennungfür Ihre Po-Dateiistfalsch,solltees auch Ihre Mo-Datei sein.
somename-en_US.po
undsomename-en_US.mo
werdennur von Plugins verwendet. Themen verwendennur die Dateinamenen_US.po
unden_US.mo
Nummer 5. Ihre Po-Datei wurdefalscherstellt. Führen Sie diefolgenden Schritte aus,umeine Po-Dateimit poedit zuerstellen. Bittebeachten Sie,dassmein Poeditin Afrikaansist.
Öffnen Siepoedit und wählen Sie die Option zum Erstelleneines Katalogs. Derfolgende Bildschirm wird angezeigt
.
Füllen Sie dieerforderlichen Felder wiegezeigt aus.
Klicken Sienun auf die Registerkarte "Quellenpfade" und schließen Sie wiegezeigt ab. Verwenden Sie
befindet.
im Feld "Pfade",wenn sich Ihre Sprachdateiim Hauptverzeichnisbefindet,und verwenden Sie..
,wenn sich die Sprachdateiin einem Ordner wie languageKlicken Sienun auf die Registerkarte "Quellenschlüsselwörter" undfüllen Sie sie wiegezeigt aus.
Speichern Sienun die Poedit-Datei als
en_US.po
in Ihrer Sprachendatei. Esist wichtig,dass Sie diepo-Datei direkt an dem Ort speichern,an dem sie sichbefindenmuss,da sie sonstnichtfunktioniert. Poedit suchtnun undfügt alle Zeichenfolgenfür die Übersetzung zu Ihrer Po-Datei hinzu. Eine Mo-Datei wird automatischerstellt,wenn die Po-Dateigespeichert wird.Am Ende sollte Ihr Po-Header so aussehen
msgid "" msgstr "" "Projekt-ID-Version: Transparent v1.2 \n" "POT-Erstellungsdatum: 2014-03-12 16: 25 + 0200 \n" "PO-Revisionsdatum: 2014-03-12 16: 28 + 0200 \n" "Letzter Übersetzer: Pieter Goosen & lt;[email protected]> \n" "Sprachteam: Transparent & lt; [email protected]> \n" "Sprache: de \n" "MIME-Version: 1.0 \n" "Inhaltstyp:text/plain; Zeichensatz=UTF-8 \n" "Content-Transfer-Encoding: 8bit \n" "X-Generator: Poedit 1.5.5 \n" "X-Poedit-KeywordsList:gettext;gettext_noop; __; _e; _n: 1,2; _x: 1,2c; _ex: 1,2c \n" "X-Poedit-Basepath :. \ N" Pluralformen:nplural=2; Plural=n!=1; \n "X-Poedit-SourceCharset: UTF-8 \n" "X-Poedit-SearchPath-0: .. \n"
Weitere Informationenfinden Siein diesem diesem Tutorial. Es hatmir sehrgeholfen,alsichmit Übersetzungen angefangen habe. Hoffe das hilft.
After inspecting your theme, this is what I came up with. I've taken the liberty to include Ruben's solution as well to make this answer as complete as possible.
There are several problems here:
Number 1.
load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );
should be:
function transparent_theme_setup() { load_theme_textdomain( 'transparent', get_template_directory() . '/languages' ); $locale = get_locale(); $locale_file = get_template_directory() . "/languages/$locale.php"; if ( is_readable( $locale_file ) ) { require_once( $locale_file ); } } add_action( 'after_setup_theme', 'transparent_theme_setup' );
Language files must always be called in the
after_setup_theme
hook.Also
get_template_directory_uri()
should be
get_template_directory()
.Number 2.
<?php echo __("thanks-for-visiting", 'transparent'); ?>
.is totally wrong. Firstly, never ever use
"
in a translation string. The translator doesn't recognize it and will skip that string. Always use'
. Secondly, don'techo
a string withecho
._e
should be used in this case. So your string should look like this:<?php _e('thanks-for-visiting', 'transparent'); ?>
.Number 3. There is no text domain set in your stylesheet's header. Add
Text Domain: transparent
just above the closing*/
in your header. So your header should look like this:/* Theme Name: Transparent Theme URI: http://websitetechnology.com.au/category/themes/transparent/ Description: Transparent responsive two-column theme. Tags: green, two-columns, right-sidebar Author:Steven Doig Author URI:http://tech.doig.com.au License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Version:1.2 Text Domain: transparent */
Number 4. The naming for your po file is wrong, so should your mo file be.
somename-en_US.po
andsomename-en_US.mo
is only used by plugins. Themes use only the filenamesen_US.po
anden_US.mo
Number 5. Your po file is wrongly created. To create a po file with poedit, follow the following steps. Please note that my poedit is in Afrikaans.
Open poedit and select the option to create a catalogue. The following screen will appear
.
Fill in the required fields as shown.
Now click "Sources paths" tab and complete as shown. Use
.
in the "Paths" field if your language file is in the main directory, and use..
if the language file is in a folder like languageNow click the "Sources keywords" tab and fill in as shown.
Now save the poedit file as
en_US.po
in your languages file. It is important that you save the po file directly in the location where it must be, otherwise it will not work. Poedit will now search and add all strings for translation to your po file. A mo file is automatically created when the po file is saved.At the end, your po header should look like this
msgid "" msgstr "" "Project-Id-Version: Transparent v1.2\n" "POT-Creation-Date: 2014-03-12 16:25+0200\n" "PO-Revision-Date: 2014-03-12 16:28+0200\n" "Last-Translator: Pieter Goosen <[email protected]>\n" "Language-Team: Transparent <[email protected]>\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.5\n" "X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;_n:1,2;_x:1,2c;_ex:1,2c\n" "X-Poedit-Basepath: .\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: ..\n"
For further reading, check this tutorial. It really helped me when I started on translations. Hope this helps.
-
Inmeinem Fall war dies der wesentliche Teil: _Sprachendateienmüssenimmerim after_setup_theme-Hook aufgerufen werden._ Ich habe siein `init`eingerichtet,aberesfunktioniertnichtmehr.In my case this was the essential part: _Language files must always be called in the after_setup_theme hook._ I used to set them up in `init` but it doesn't work anymore.
- 0
- 2016-02-17
- Attila Fulop
-
- 2014-03-10
Verwenden Sienicht get_template_directory_uri () .Verwenden Sie stattdessen get_template_directory () .Ihr Code solltefolgendermaßen aussehen:
load_theme_textdomain( 'transparent', get_template_directory() . '/languages' ); $locale = get_locale(); $locale_file = get_template_directory() . "/languages/$locale.php"; if ( is_readable( $locale_file ) ) { require_once( $locale_file ); }
Don't use get_template_directory_uri(). Use get_template_directory() instead. Your code should look like this:
load_theme_textdomain( 'transparent', get_template_directory() . '/languages' ); $locale = get_locale(); $locale_file = get_template_directory() . "/languages/$locale.php"; if ( is_readable( $locale_file ) ) { require_once( $locale_file ); }
-
Danke @Ruben.Ich habe diese Änderung vorgenommen,aber das Problembleibtbestehen.Thanks @Ruben. I made this change but the issue remains.
- 0
- 2014-03-11
- Steve
-
1. Stellen Sie sicher,dass Sie diesen Codein einem after_setup_theme-Filter hinzufügen. 2. Versuchen Sie,dieses Plugin zu verwenden. Möglicherweise wird angezeigt,obbei Ihren .po/.mo-Dateienein Fehler vorliegt: http://wordpress.org/plugins/codestyling-localization/1. Make sure that you add that code inside a after_setup_theme filter. 2. Try using this plugin, it may show if there's an error with your .po/.mo files: http://wordpress.org/plugins/codestyling-localization/
- 1
- 2014-03-11
- Ruben Bristian
-
1. Ich habe den obigen Codein eine Funktionnamens "transparent_theme_setup ()"eingefügt und dann "add_action" ("after_setup_theme","transparent_theme_setup"); ".Istes das was dumeinst?2. Das Codestyling-Plugin zeigt an,dassbei .po/.mo-Dateien kein Fehler vorliegt.1. I added the code above into a function called `transparent_theme_setup()`, and then called `add_action( 'after_setup_theme', 'transparent_theme_setup' );`. Is this what you mean? 2. Codestyling plugin shows there's no error with .po/.mo files.
- 1
- 2014-03-12
- Steve
-
@Steve,dasist richtig.@Steve, that is correct.
- 0
- 2014-03-12
- Pieter Goosen
-
In Ordnung.Nun,das Problemblieb,nachdemich dasgetan hatte.Ok. Well, the issue remained after I did that.
- 0
- 2014-03-13
- Steve
-
- 2015-09-03
Wenn Sie
load_theme_textdomain
verwenden,muss Ihr Sprachdateinamegenaunach dem Gebietsschemabenannt werden. Nennen SieesLesen Sie die Anweisungen sorgfältig unter: https://codex.wordpress.org/Function_Reference/load_theme_textdomain
When using
load_theme_textdomain
your language filename must be named based on the locale exactly. Name it en_US.mo instead of transparent-en_US.moRead the instructions carefully at: https://codex.wordpress.org/Function_Reference/load_theme_textdomain
Ich kannmeine Übersetzungennichtin meinem Thema zum Laufenbringen. Hierist wasich habe
Infunctions.php habeich:
Ich habe
enthält:
In header.php habeich ab Zeile 58:
Inmeiner style.css habeich Folgendes
Im Frontend seheichjedoch:
Können Sie sehen,warum diese Übersetzungnichtfunktioniert?