POeditで.potファイルを作成する方法は?


33

今日は本当に簡単なものに見えるものに何時間も費やしました。それは、私が作成しているWordpressテーマの.potファイルを作成することです。私が読んだスマッシングマガジンの記事Tutsplus記事使用する方法について、いくつかの他の人Poeditをテーマの.POTファイルを作成すると、その後、.moという作成し、.poファイルが、悲しいことに、私はまだ最初で立ち往生していますステップ。

Poeditをインストールしましたが、UIはすべてのチュートリアルで示されているものとはまったく異なり、.potファイルを作成するオプションはもうないようです。使用できるのは、既存の.potファイルから.poファイルと.moファイルを作成することだけです。これは今必要なものではありません。

だから誰かが私にPoeditまたは他の方法を使用して.potファイルを作成する方法を教えてもらえますか、本当に感謝します。

ありがとう!


回答:


18

Eazy Poを試すことができます。

  • ファイルメニューから「ソースコードファイルから新規...」を選択します。
  • xgettext Command Managerウィンドウ内。「Browse folder」を押して、ベースソースフォルダーを選択します。
  • [ビルド]ペインで[コマンドの実行]ボタンを押して、Potファイルを生成します。

POEditよりもずっと良くて簡単です。きれいなUI。デフォルトでは、キーワードリストにすべてのi18n翻訳関数があります。ありがとうございました。
パラシャー

これは、POEditのWordPress機能が有料であることを認識した後に使用しました。完全に機能しました!
スウェン

37

OS XでPoedit(無料版、バージョン1.6.10)を使用してテーマの.potファイルを作成する方法は次のとおりです。

ベストプラクティスは、テーマディレクトリの「languages」という名前のフォルダーに言語ファイルを保存することです。まだ開始していない場合は、作成してください。

Poeditの場合:

  1. 「ファイル」メニューで「新規」を選択します
  2. テーマで使用した言語(おそらく英語)を選択します
  3. [カタログ]メニューで[プロパティ]を選択します
  4. [翻訳プロパティ]タブにプロジェクト情報を入力します
  5. 3番目のタブ「ソースキーワード」に移動します
  6. 「新しい項目」ボタン(第二ボタン)をクリックし、キーワードを入力して、キーワードごとにこれを繰り返します(___eesc_attr_e、など)
  7. 下部の[OK]ボタンをクリックします
  8. [ファイル]メニューで[名前を付けて保存]を選択します。
  9. ファイルをテーマディレクトリの「languages」フォルダに「yourthemename.pot」として保存します(デフォルトで.poとして保存されるため、ファイル名に.pot拡張子を追加してください)。
  10. [カタログ]メニューで[プロパティ]を再度選択します
  11. 2番目のタブ「ソースパス」に移動します
  12. 「ベースパス」の値を設定します../(.potファイルはサブディレクトリに保存されるため、この方法でベースを親ディレクトリ、つまりテーマディレクトリに設定します)
  13. [パス]の横にある[新しいアイテム]ボタンをクリックして入力します.(これにより、テーマディレクトリとそのサブディレクトリがスキャンされます)
  14. 下部の[OK]ボタンをクリックします
  15. プロジェクトウィンドウで[更新]をクリックします(上部の2番目のアイコン)
  16. 「ファイル」メニューで「保存」をクリックします

これで完了です。


これは、WordPressおよび翻訳システムの特定の変更では機能しません。せいぜい不完全です。
オットー

1
それは私のプラグイン
パブロSG Pacheco

プラグインに対しては機能しますが、ヘッダーからプラグインの説明を変換し
ません

25

これは、POEditなしでWordPressツールを使用して実行できます。

まず、http://develop.svn.wordpress.org/trunk/のsvnチェックアウトを実行します

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

次に、その中のi18nツールディレクトリに切り替えます。

cd wpdev/tools/i18n/

次に、テーマのディレクトリでmakepot.phpを実行します。

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

これにより、themename.potファイルが作成されます。好きな標準の翻訳ツールで使用してください。

これは、WordPressコードを使用してi18n関数を検索するため、より優れています。さらに、テーマヘッダー情報(名前、説明など)を見つけて追加します。これにより、これらも翻訳できます。動作させるには、style.cssに「Text Domain:」ヘッダーを含めるようにしてください。


これはプラグインでも機能しますか?
マルチーモハンティ14

2
はい、「wp-theme」の代わりに「wp-plugin」を使用するだけで、プラグイン用のPOTファイルが生成されます。
オットー14

WordPress固有のツールを使用しない他のすべての方法は、何らかの形で壊れています。
オットー

素晴らしいツール!それがたとえI「ファイルを生成できませんでした」などのエラーを投げままもののchmod +xディレクトリ...
サミュエル・ELH

1
chmod + xが役立つのはなぜですか?おそらく、ディレクトリを実行可能ファイルではなく書き込み可能にしてみてください。
オットー

5

WP-CLIを使用するのが最も簡単な方法であることがわかりました。テーマまたはプラグインに移動し、次のコマンドを実行します(WP-CLIのインストール後):

wp i18n make-pot . languages/my.pot

(コマンドのドキュメントを参照)

その後、このファイルをPoeditまたはその他の便利な翻訳ツールで編集できます。


0

Loco Translateプラグインを使用して、外部ツールを完全に削除できます。私は約1年前に試してみましたが、それ以来POEditを使用していません。テストサイトにインストールし、ワンクリックでPOTフ​​ァイルを作成します。


これは、WordPressおよび翻訳システムの特定の変更では機能しません。せいぜい不完全です。
オットー

うん?WPプラグインです。
確かに

0

Easy Poの代わりにPoeditを使用したい人のために。

  1. ダウンロード(最新バージョンの)Poeditとインストール
  2. [ファイル]> [新規]に移動します。新しいタブが表示されます。翻訳の言語を選択し、WordPressテーマのルートフォルダーに保存(ctrl + s)します。

  3. 次に表示されるページで、「ソースから抽出」をクリックします。次に表示されるタブは、貼り付けたリンクで使用されているタブに似ています。「プロジェクト情報」は「翻訳プロパティ」になり、「パス」と「キーワード」はそれぞれ「ソースパス」と「ソースキーワード」になります


0

私は同じ問題を抱えています、解決策はカタログを抽出するときに最初のタブにあり、UTF8を推奨し、3番目のタブ「ソースキーワード」で「新しいアイテム」ボタン(2番目のボタン)をクリックし、キーワードを入力して繰り返しますキーワード(__、_ e)ごとにこれ。


0

オットーは言いました

Macユーザーの場合、次のようなことをします。

  • インストール後 svn co http://develop.svn.wordpress.org/trunk/ wpdev

そう...

  • 作る/languages/あなたのテーマにディレクトリ
  • lang.commandその/languages/ディレクトリのようなコマンドファイルを作成します
  • 内部 lang.command

このようなコードを追加します。

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

PS:正しいmakepot.phpパスとmythemeをテーマ名に変更します

今、毎回新しい作りたい.POTのファイルを、あなただけの走りができlang.commandを

dir


0

スクリプトの自動作成.poファイル、コードからのすべてのテキストの自動追加

  1. load_theme_textdomain( 'my-textdomain'、DIR。 '/ languages /');を追加します。
  2. フォルダーwp-content / themes / MY_THEME / languagesを作成します(このフォルダーに言語.moファイルを追加します)
  3. po.phpを作成し、このスクリプトを追加します。
<?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. 移動youdomain / WP-コンテンツ/テーマ/ MY_THEME /言語/ po.phpとの.poファイルを作成すると、
  2. コピーのwp-コンテンツ/テーマ/ MY_THEME /言語/ [LANG]の.poとデスクトップとオープンにPoedit - >コンパイルMO - >コピー[LANG] .moというの言語フォルダ

エコーとして使用__( 'This text'、 'you-textdomain');


-1

この投稿を試してください:Poeditを使用して.potまたは.poファイルを作成します。ワークフローを説明し、.poファイルと.potファイルが同じであることを示します。

デフォルトでは、Poeditはファイルを.poファイルとして保存しますが、2つのファイルは同一であるため、.poファイルを.potファイルとして保存することを選択するだけで回避できます。


これは、WordPressおよび翻訳システムの特定の変更では機能しません。せいぜい不完全です。
オットー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.