Wie erstelle ich .pot Dateien mit POedit?


33

Ich habe heute Stunden damit verbracht, etwas wirklich Einfaches zu tun, nämlich eine .pot-Datei für ein Wordpress-Theme zu erstellen, das ich erstelle. Ich habe den Smashing Magazine-Artikel , den Tutsplus-Artikel und einige andere Artikel zur Verwendung von Poedit zum Erstellen von .pot-Dateien für ein Thema und zum Erstellen von .mo- und .po-Dateien gelesen Schritt.

Ich habe Poedit installiert und finde, dass die Benutzeroberfläche völlig anders ist als in allen Tutorials und es scheint, als gäbe es keine Möglichkeit mehr, eine .pot-Datei zu erstellen. Das Einzige, was verfügbar ist, ist, aus einer vorhandenen .pot-Datei .po- und .mo-Dateien zu erstellen, was ich jetzt nicht brauche.

Kann mir jemand sagen, wie ich .pot-Dateien mit Poedit oder mit einer anderen Methode erstellen kann? Ich würde es wirklich begrüßen.

Vielen Dank!


Antworten:


18

Sie können versuchen, Eazy Po .

  • Wählen Sie im Menü "Datei" die Option "Neu aus Quellcodedateien".
  • Im xgettext Command Manager-Fenster; Drücken Sie auf „Ordner durchsuchen“, um den Basisquellordner auszuwählen.
  • Klicken Sie im Erstellungsbereich auf die Schaltfläche "Befehl ausführen", um eine Pot-Datei zu generieren.

Viel besser und einfacher als POEdit. Bereinigen Sie die Benutzeroberfläche. Verfügt standardmäßig über alle i18n-Übersetzungsfunktionen in der Keyword-Liste. Vielen Dank.
Paras Shah

Wird verwendet, nachdem erkannt wurde, dass die WordPress-Funktionen von POEdit bezahlt sind. Perfekt funktioniert!
Swen

37

So können Sie mit Poedit (kostenlose Edition, Version 1.6.10) unter OS X eine .pot-Datei für Ihr Thema erstellen.

Es wird empfohlen, Sprachdateien in einem Ordner mit dem Namen "languages" in Ihrem Themenverzeichnis zu speichern. Wenn Sie es noch nicht getan haben, erstellen Sie es, bevor Sie beginnen.

In Poedit:

  1. Im Menü "Datei" wählen Sie "Neu"
  2. Wählen Sie die Sprache, die Sie in Ihrem Thema verwendet haben (wahrscheinlich Englisch)
  3. Im Menü "Katalog" wählen Sie "Eigenschaften"
  4. Geben Sie die Projektinformationen auf der Registerkarte "Übersetzungseigenschaften" ein
  5. Gehen Sie zum dritten Tab "Quellenschlüsselwörter"
  6. Klicken Sie auf „Neuer Eintrag“ Taste (2. Taste) und geben Sie ein Stichwort , und wiederholen Sie dies für jedes Ihrer Keywords ( __, _e, esc_attr_e, etc.)
  7. Klicken Sie unten auf die Schaltfläche "OK"
  8. Wählen Sie im Menü "Datei" die Option "Speichern unter".
  9. Speichern Sie die Datei als "yourthemename.pot" im Ordner "languages" in Ihrem Themenverzeichnis (stellen Sie sicher, dass Sie die Erweiterung .pot zum Dateinamen hinzufügen, da sie standardmäßig als .po gespeichert wird).
  10. Wählen Sie im Menü "Katalog" erneut "Eigenschaften"
  11. Gehen Sie zur 2. Registerkarte "Quellenpfade"
  12. Setzen Sie den Wert für " ../Basispfad " auf (die .pot-Datei wird in einem Unterverzeichnis gespeichert, sodass Sie auf diese Weise die Basis auf das übergeordnete Verzeichnis, dh Ihr Themenverzeichnis, setzen).
  13. Klicken Sie neben "Pfad" auf die Schaltfläche "Neues Element" und geben Sie "Enter" ein. Dadurch .wird Ihr Themenverzeichnis und seine Unterverzeichnisse durchsucht.
  14. Klicken Sie unten auf die Schaltfläche "OK"
  15. Klicken Sie im Projektfenster auf "Update" (2. Icon oben)
  16. Klicken Sie im Menü "Datei" auf "Speichern".

Und du bist fertig :)


Dies funktioniert nicht für WordPress und die spezifischen Änderungen am Übersetzungssystem. Es ist bestenfalls unvollständig.
Otto

1
Es hat wirklich gut funktioniert für mein Plugin
Pablo SG Pacheco

Es funktioniert für das Plugin, übersetzt aber nicht die Beschreibung des Plugins aus dem Header
Awsme Sandy

25

Sie können dies mit den WordPress-Tools ohne POEdit tun.

Machen Sie zuerst eine svn-Prüfung unter http://develop.svn.wordpress.org/trunk/ :

svn co http://develop.svn.wordpress.org/trunk/ wpdev

Wechseln Sie dann in das i18n-Tools-Verzeichnis:

cd wpdev/tools/i18n/

Dann starte einfach die makepot.php über das Verzeichnis deines Themes:

php makepot.php wp-theme /path/to/your/theme themename.pot

Dadurch wird eine themename.pot-Datei für Sie erstellt. Verwenden Sie es in jedem Standard-Übersetzungstool, das Sie mögen.

Dies ist besser, weil es den WordPress-Code verwendet, um die i18n-Funktionen zu finden, damit Sie keine davon verpassen. Darüber hinaus werden Informationen wie der Titel des Themas, wie Name, Beschreibung usw., gefunden und hinzugefügt. Dadurch können diese auch übersetzt werden. Stellen Sie sicher, dass Sie den Header "Text Domain:" in Ihre style.css einfügen, damit diese funktionieren.


Funktioniert das auch für ein Plugin?
Maruti Mohanty

2
Ja, benutze einfach "wp-plugin" anstelle von "wp-theme" und es wird eine POT-Datei für ein Plugin generiert.
Otto

Jede andere Methode, die nicht die WordPress-spezifischen Tools verwendet, ist in irgendeiner Weise fehlerhaft.
Otto

Tolle Werkzeuge! Obwohl es immer wieder Fehler wie "Konnte keine Datei generieren", obwohl ich chmod +xdie Verzeichnisse ..
Samuel Elh

1
Warum würde chmod + x helfen? Vielleicht sollten Sie versuchen, das Verzeichnis nicht ausführbar, sondern beschreibbar zu machen.
Otto

5

Ich fand, der einfachste Weg ist jetzt, die WP-CLI zu verwenden . Navigiere zu deinem Theme oder Plugin und führe den folgenden Befehl aus (nachdem WP-CLI installiert wurde):

wp i18n make-pot . languages/my.pot

(Siehe Dokumentation des Befehls)

Sie können diese Datei dann mit Poedit oder einem anderen praktischen Übersetzungstool bearbeiten.


0

Sie können externe Tools mit dem Loco Translate- Plugin ganz ablegen. Ich habe es vor etwa einem Jahr versucht und seitdem nie mehr POEdit verwendet. Installieren Sie es auf Ihrer Test-Site und erstellen Sie mit einem Klick eine POT-Datei.


Dies funktioniert nicht für WordPress und die spezifischen Änderungen am Übersetzungssystem. Es ist bestenfalls unvollständig.
Otto

Woot? Es ist ein WP-Plugin.
sicherlich

0

Für alle, die Poedit anstelle von Easy Po verwenden möchten.

  1. Laden Sie die neueste Version von Poedit herunter und installieren Sie sie
  2. Gehen Sie zu Datei> Neu. Es öffnet sich eine neue Registerkarte, in der Sie Ihre Übersetzungssprache auswählen und (Strg + S) im Stammverzeichnis Ihres WordPress-Themas speichern können.

  3. Klicken Sie auf der nächsten Seite auf "Aus Quellen extrahieren". Die Registerkarte, die als Nächstes angezeigt wird, ähnelt der Registerkarte, die in den von Ihnen eingefügten Links verwendet wird. "Projektinfo" ist jetzt "Übersetzungseigenschaften", und "Pfade" und "Schlüsselwörter" sind "Quellenpfade" bzw. "Quellenschlüsselwörter"


0

Ich habe das gleiche Problem, die Lösung ist in der ersten Registerkarte, wenn Sie Katalog extrahieren, sollte UTF8 empfohlen, und in der 3. Registerkarte "Quellen Schlüsselwörter", klicken Sie auf die Schaltfläche "Neues Element" (2. Schaltfläche) und geben Sie ein Schlüsselwort und wiederholen Dies gilt für jedes Ihrer Keywords (__, _e).


0

Wie Otto sagte :

Für Mac-Benutzer würde ich Folgendes tun:

  • Nach der Installation von svn co http://develop.svn.wordpress.org/trunk/ wpdev

So...

  • Mach /languages/dir auf dein Thema
  • Erstellen Sie eine Befehlsdatei wie lang.commandin diesem /languages/Verzeichnis
  • Innerhalb lang.command

Code hinzufügen so etwas ..

#!/bin/bash
cd $(dirname "$0")
php /Users/YOUNAME/wpdev/tools/i18n/makepot.php wp-theme ../../mytheme mytheme.pot

PS: Ändern Sie Ihren korrekten makepot.php- Pfad und das Mythem in den Namen Ihres Themas

Jetzt können Sie jedes Mal, wenn Sie eine neue .POT- Datei erstellen möchten, einfach lang.command ausführen

dir


0

Skript .po-Datei automatisch erstellen, den gesamten Text aus Ihrem Code automatisch hinzufügen

  1. Füge load_theme_textdomain hinzu ('my-textdomain', DIR . '/ Languages ​​/');
  2. Erstelle den Ordner wp-content / themes / MY_THEME / languages ​​(füge deine Sprachdatei .mo diesem Ordner hinzu)
  3. Erstellen Sie po.php und fügen Sie dieses Skript hinzu:
<?php /*Script by Sien.com.vn */
define('WP_USE_THEMES', true);

require(''.$_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );

function title_p($title) {

$title='Po create';   

return $title;}
add_filter( 'pre_get_document_title', 'title_p' );


$robots_p='noindex,nofollow';   

get_header();  

echo '<div id="content" class="col col-100">';

if(current_user_can('manage_options')){

function write_txt($path,$content,$type){
$file=fopen($path,$type) or die();
fwrite($file,$content);
fclose($file);
return TRUE;
}

if(isset($_POST['lang'])){
$lang_code=pathinfo($_POST['lang'],PATHINFO_FILENAME);

load_textdomain('this_lang',__DIR__.'/'.$lang_code.'.mo');


$textdomain=$_POST['textdomain'];


$txt='';

function sfile($dir, $ext) {
    global $textdomain;

$globFiles = glob("$dir".DIRECTORY_SEPARATOR."*.$ext");
$globDirs = glob("$dir/*", GLOB_ONLYDIR);

foreach ($globDirs as $dir) {
sfile($dir, $ext);

}

foreach ($globFiles as $file=>$path) {

$txt.=file_get_contents($path,FILE_USE_INCLUDE_PATH);

}


preg_match_all('/__\(\'(.+?)\',\''.$textdomain.'\'\)/',$txt,$output);


$arr=array();

foreach(array_unique($output[1]) as $v){

    if(isset($v)){
write_txt(''.__DIR__.'/po.dat',''.$v.'**$!3|\\/**','a+');
    }
}

}
sfile(get_template_directory(),'php');


$get=file_get_contents(''.__DIR__.'/po.dat');

$k=explode('**$!3|\\/**',$get);


foreach(array_unique($k) as $v){

    if(!empty($v)){ 

if($v==__($v,'this_lang')){
write_txt(''.__DIR__.'/po.dat.empty','
msgid "'.$v.'"
msgstr ""
','a+');
}else{
write_txt(''.__DIR__.'/po.dat.isset','
msgid "'.$v.'"
msgstr "'.__($v,'this_lang').'"
','a+');
}

    }

    }

if(empty(file_get_contents(''.__DIR__.'/po.dat.isset')) && empty(file_get_contents(''.__DIR__.'/po.dat.empty'))){
        echo '<div class="error">Error, Textdomain <b>'.$textdomain.'</b> not found!</div>';
    }else{

write_txt(''.__DIR__.'/'.$lang_code.'.po','# '.$lang_code.' LANG
msgid ""
msgstr ""
"PO-Revision-Date: 2017-11-23 22:26+0700\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.4\n"
"Language: vi_VN\n"
"Project-Id-Version: Sien\n"
"POT-Creation-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"


'.file_get_contents(''.__DIR__.'/po.dat.isset').'
'.file_get_contents(''.__DIR__.'/po.dat.empty').'
','w+');


echo '<div class="success"><span style="color:blue">Success</span> -> Saved to: '.__DIR__.'/ <b>'.$lang_code.'.po</b></div>';

unlink(''.__DIR__.'/po.dat');
unlink(''.__DIR__.'/po.dat.isset');
unlink(''.__DIR__.'/po.dat.empty');

}

}


echo '<form action="" method="POST">
<div class="menu bd text-center"><p>Language: <select name="lang">';

foreach(glob("".__DIR__."/*.mo") as $path) {echo '<option value="'.$path.'">'.pathinfo($path,PATHINFO_FILENAME).'</option>';}

echo '</select></p>';

$txt='';
function stext($dir, $ext) {
$globFiles = glob("$dir".DIRECTORY_SEPARATOR."*.$ext");
$globDirs = glob("$dir/*", GLOB_ONLYDIR);
foreach ($globDirs as $dir) {stext($dir, $ext);}

foreach ($globFiles as $file=>$path) {
    if($path!=__FILE__){
$txt.=(str_replace(' ','',file_get_contents($path,FILE_USE_INCLUDE_PATH)));
    }

}

preg_match_all('/load_theme_textdomain\((\'|\")(.+?)(\'|\")/',$txt,$gtextdomain);
$td='';
foreach($gtextdomain[2] as $text){

    if(!empty($text)){
    $td.='<option value="'.$text.'">'.$text.'</option>';
    }


}

write_txt(__DIR__.'/textdomain.dat',$td,'a+');
}
stext(get_template_directory(),'php');

$textdomain=file_get_contents(__DIR__.'/textdomain.dat');
if(empty($textdomain)){echo '<div class="error">Not found textdomain [ <b>load_theme_textdomain ("you-textdomain","path_to_language_folder");</b> ]</div>';}else{
echo '<p>Textdomain: <select name="textdomain">'.$textdomain.'</select></p>';
}

echo '<p>
<input type="submit" value="Create new.po file"/>
</p>
</div>
</form>';

unlink(__DIR__.'/textdomain.dat');

}

echo '</div>';

get_footer(); 
  1. Gehen Sie zu youdomain / wp-content / themes / MY_THEME / languages ​​/ po.php und erstellen Sie eine .po-Datei
  2. Kopieren Sie wp-content / themes / MY_THEME / languages ​​/ [LANG] .po auf den Desktop und öffnen Sie es mit Poedit -> Compile MO -> kopieren Sie [LANG] .mo in den Ordner languages

Verwenden Sie als Echo __ ('Dieser Text', 'Sie-Textdomäne');


-1

Versuchen Sie diesen Beitrag: Erstellen Sie eine .pot- oder .po-Datei mit Poedit . Es beschreibt den Arbeitsablauf und gibt an, dass .po- und .pot-Dateien identisch sind.

Standardmäßig speichert Poedit Ihre Datei als .po-Datei. Da die beiden Dateien jedoch identisch sind, können Sie dies umgehen, indem Sie die .po-Datei einfach als .pot-Datei speichern


Dies funktioniert nicht für WordPress und die spezifischen Änderungen am Übersetzungssystem. Es ist bestenfalls unvollständig.
Otto
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.