web-dev-qa-db-ja.com

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

私は今日何時間もかけて、私が作成しているWordpressテーマ用の.potファイルを作成するという、非常に単純なもののように見えるものについて考えました。私は Smashing Magazineの記事Tutsplusの記事 およびその他のいくつかの Poedit を使用してテーマ用の.potファイルを作成してから.moおよび.poファイルを作成する方法を読みました。しかし、悲しいことに、私はまだ最初のステップで立ち往生しています。

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

それで、誰かがどうやってPoeditを使って、または他の方法で.potファイルを作成することができるか教えてください、私は本当にそれを感謝するでしょう。

ありがとうございます。

31
user1981248

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

  • ファイルメニューから「ソースコードファイルから新規作成」を選択します。
  • Xgettext Command Managerウィンドウ内。 「Browse folder」を押してベースソースフォルダを選択します。
  • ビルドペインで「Execute Command」ボタンを押してPotファイルを生成します。
16
ٍShagrouni

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

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

Poeditでは:

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

そして、これで終わりです:)

37
Jasper

あなたはPOEditなしで、WordPressツールでこれをすることができます。

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

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

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

cd wpdev/tools/i18n/

それなら、テーマのディレクトリにmakepot.phpを実行してください。

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

これでthemename.potファイルが作成されます。あなたが好きな標準の翻訳ツールでそれを使ってください。

WordPressのコードを使って国際化関数を見つけるので、これはより良い方法です。さらに、名前、説明などのテーマヘッダー情報などを検索して追加します。これにより、翻訳も可能になります。それらが機能するためには、必ずあなたのstyle.cssに "Text Domain:"ヘッダを含めてください。

25
Otto

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

wp i18n make-pot . languages/my.pot

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

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

3
lhermann

As Ottoの言った

Macユーザーの場合、私は次のようにします。

  • svn co http://develop.svn.wordpress.org/trunk/ wpdevによってインストールされた後

そう...

  • あなたのテーマに/languages/ dirを作ります
  • そのlang.command dirに/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
l2aelba

あなたは Loco Translate pluginと一緒に外部ツールを完全に落とすことができます。私は約1年前にそれを試してみました、それ以来POEditを使ったことがありません。テストサイトにインストールしてワンクリックでPOTフ​​ァイルを作成します。

0
Ihor Vorotnov

私は同じ問題を抱えている、あなたがカタログを抽出するとき最初のタブにある、UTF8推奨されるべきである、そして3番目のタブの "Sources keywords"にある、 "New item"ボタン(2nd button)をクリックしそしてキーワードを入力しそして繰り返すこれはあなたの各キーワード(__、_e)につきます。

0
user105155

スクリプトで自動的に.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-content/themes/MY_THEME/languages/po.php に移動して、.poファイルを作成します。
  2. wp-content /テーマ/ MY_THEME/languages/[LANG] .po をデスクトップにコピーして Poedit - > MOのコンパイル - > [ - LANG] .moを languages フォルダにコピー

echo __( 'This text'、 'you-textdomain')として使用してください。

0
Siên

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

  1. ダウンロード (の最新バージョン)Poedit and Install
  2. ファイル>新規に移動します。新しいタブが表示されたら、あなたの翻訳の言語を選択し、あなたのワードプレスのテーマのルートフォルダに保存(Ctrl + S)します。

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

0
Toheeb