2012-01-05 4 views
1

私はphp言語ファイルを持っていて、配列の値をリストしています。php配列からpoファイルを生成するにはどうすればよいですか?

これを.poファイルに変換します。

PHPファイルは、次のようになります。

<?php 

$LANG_ = array(

// advanced search buttons 
"_search1"    => "Start Search", 
"_search2"    => "Hide Search Box", 
"_search3"    => "Search", 

// page numbering 
"_pn1"    => "Page %CURRENT_PAGE% of %TOTAL_PAGES%", 
"_pn2"    => "<< First", 
"_pn3"    => "Last >>", 

// _tpl_article-add.php 
"_tpl_article-add1"    => "Article Submission Form", 
"_tpl_article-add2"    => "Submit Article", 
"_tpl_article-add3"    => "Article Submitted Successfully", 


// errors 
"_err14"   => "Delete", 
"_err144"   => "Display Image", 
"_err15"   => "Edit", 
"_err16"   => "View", 

); 
?> 

これは一例であり、ファイル自体は3000行を超える、巨大です。これらのうちの1つ1つをpoカタログに手動で挿入するのは私を殺すでしょう。私のためにこれを自動化できるものはありますか?

私はpoeditを使用しています。

おかげで、私は何が必要か、既存のgettextのファイル(-PO)に見て、最初のエントリは、ファイルのヘッダーです...ので、任意の洞察力が有用であろう、

答えて

2

これに新たなんです。逃げ出したのはaddslashesでした。たぶんあなたはより多くのことをする必要があります。

$fh = fopen("en.po", 'w'); 
fwrite($fh, "#\n"); 
fwrite($fh, "msgid \"\"\n"); 
fwrite($fh, "msgstr \"\"\n"); 

foreach ($LANG_ as $key => $value) { 
    $key = addslashes($key); 
    $value = addslashes($value); 
    fwrite($fh, "\n"); 
    fwrite($fh, "msgid \"$key\"\n"); 
    fwrite($fh, "msgstr \"$value\"\n"); 
} 
fclose($fh); 
+0

hm、それは素晴らしい解決策のように見えます...私はそれほど多くのPHPを理解できれば))) どうにかして、私は1つのPHPファイルに配列と一緒に入れて、構文エラーがあります。 fcloseについて何か... –

+0

私はコードをテストしませんでしたが、 'fclose($ fh);'は正しく見えます。その後に改行がない可能性があります。 –

+0

fwrite($ fh、 "msgstr = \" $ value \ "\ n);が見つかりませんでした。私は今それをテストし、報告します:) –

3

POファイルにPHPの配列を変換しますし、また、あなたのエスケープのすべてが正しいことを確認しますphp2poをお試しください。 POファイルは、PoeditやVirtaalのようなツールで編集することができます。