POedit로 .pot 파일을 만드는 방법은 무엇입니까?


33

나는 오늘 정말 단순한 것처럼 보이는 것에 대해 몇 시간을 보냈습니다. 이것은 내가 만들고있는 Wordpress 테마의 .pot 파일을 만드는 것입니다. 나는 읽기했습니다 스매싱 매거진 기사Tutsplus 기사 및 사용 방법에 대한 몇 가지 다른 Poedit을 .mo 생성 한 다음 테마 파일을 .POT 생성하고,과와 .po 파일을하지만, 슬프게도, 나는 여전히 처음에 붙어있어 단계.

Poedit를 설치했는데 UI가 모든 자습서에 표시된 것과 완전히 다르며 .pot 파일을 만들 수있는 옵션이 더 이상없는 것 같습니다. 사용 가능한 유일한 것은 기존 .pot 파일에서 .po 및 .mo 파일을 만드는 것입니다. 지금은 필요하지 않습니다.

그래서 누군가 Poedit를 사용하거나 다른 방법으로 .pot 파일을 어떻게 만들 수 있는지 알려주십시오. 정말 감사합니다.

감사!


POT 파일 작성을 시도하십시오 .
WisdmLabs

답변:


18

Eazy Po 시도해보십시오 .

  • 파일 메뉴에서 "소스 코드 파일에서 새로 작성"을 선택하십시오.
  • xgettext Command Manager 창에서; “폴더 찾아보기”를 눌러 기본 소스 폴더를 선택하십시오.
  • 빌드 패널에서“명령 실행”버튼을 눌러 Pot 파일을 생성하십시오.

POEdit보다 훨씬 낫고 쉽습니다. 깨끗한 UI. 기본적으로 키워드 목록에 모든 i18n 변환 기능이 있습니다. 고맙습니다.
Paras Shah

POEdit의 WordPress 기능이 유료임을 인식 한 후에 사용했습니다. 완벽하게 일했습니다!
Swen

37

다음은 OS X에서 Poedit (무료 버전, 버전 1.6.10)를 사용하여 테마에 대한 .pot 파일을 작성하는 방법입니다.

모범 사례는 언어 파일을 테마 디렉토리의 "languages"폴더에 저장하는 것입니다. 아직 작성하지 않은 경우 시작하기 전에 작성하십시오.

Poedit에서 :

  1. "파일"메뉴에서 "신규"를 선택하십시오.
  2. 테마에 사용한 언어를 선택하십시오 (아마도 영어)
  3. "카탈로그"메뉴에서 "속성"을 선택하십시오.
  4. "번역 속성"탭에 프로젝트 정보를 입력하십시오.
  5. 세 번째 탭인 "소스 키워드"로 이동
  6. "새 항목"버튼 (2 버튼)을 클릭하고 키워드를 입력하고 각 키워드에 대해이 작업을 반복 ( __, _e, esc_attr_e, 등)
  7. 하단의 "확인"버튼을 클릭하십시오
  8. "파일"메뉴에서 "다른 이름으로 저장"을 선택하십시오.
  9. 파일을 테마 디렉토리의 "languages"폴더에 "yourthemename.pot"으로 저장하십시오 (기본적으로 .po로 저장되므로 파일 확장자에 .pot 확장자를 추가하십시오)
  10. "카탈로그"메뉴에서 "속성"을 다시 선택하십시오.
  11. 두 번째 탭 "소스 경로"로 이동
  12. "기본 경로"의 값을로 설정하십시오 ../(.pot 파일은 서브 디렉토리에 저장되어 기본 디렉토리를 상위 디렉토리 (예 : 테마 디렉토리)로 설정)
  13. "경로"옆에있는 "새 항목"버튼을 클릭하고 입력하십시오 .(테마 디렉토리 및 하위 디렉토리를 스캔하게됩니다)
  14. 하단의 "확인"버튼을 클릭하십시오
  15. 프로젝트 창에서 "업데이트"(맨 위의 두 번째 아이콘)를 클릭하십시오.
  16. "파일"메뉴에서 "저장"을 클릭하십시오

그리고 당신은 끝났습니다 :)


WordPress 및 번역 시스템의 특정 변경 사항에는 작동하지 않습니다. 기껏해야 불완전하다.
Otto

1
그것은 내 플러그인 정말 잘 작동
파블로 SG 파 체코에게

플러그인에서는 작동하지만 헤더에서 플러그인 설명을 번역하지는 않습니다.
Awsme Sandy

25

POEdit없이 WordPress 도구를 사용하여이 작업을 수행 할 수 있습니다.

먼저 http://develop.svn.wordpress.org/trunk/ 의 svn 체크 아웃을 수행 하십시오 .

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

그런 다음 i18n tools 디렉토리로 전환하십시오.

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 :"헤더가 포함되어 있는지 확인하십시오.


플러그인에서도 작동합니까?
Maruti Mohanty

2
예, "wp-theme"대신 "wp-plugin"을 사용하면 플러그인에 대한 POT 파일이 생성됩니다.
오토

WordPress 전용 도구를 사용하지 않는 다른 모든 방법은 어떤 식 으로든 손상되었습니다.
Otto

멋진 도구! chmod +x디렉토리가 "파일을 생성 할 수 없습니다"와 같은 오류가 계속 발생하지만 ..
Samuel Elh

1
chmod + x가 왜 도움이됩니까? 실행 파일 대신 디렉토리를 쓰기 가능하게 만들어야 할 수도 있습니다.
Otto

5

가장 쉬운 방법은 WP-CLI 를 사용하는 것 입니다. 테마 또는 플러그인으로 이동하여 다음 명령을 실행하십시오 (WP-CLI 설치 후).

wp i18n make-pot . languages/my.pot

( 명령 설명서 를 참조하십시오 )

그런 다음 Poedit 또는 다른 편리한 번역 도구를 사용하여이 파일을 편집 할 수 있습니다.


0

Loco Translate 플러그인을 사용 하면 외부 도구를 모두 삭제할 수 있습니다 . 약 1 년 전에 시도했지만 POEdit을 사용한 적이 없습니다. 테스트 사이트에 설치하고 한 번의 클릭으로 POT 파일을 작성하십시오.


WordPress 및 번역 시스템의 특정 변경 사항에는 작동하지 않습니다. 기껏해야 불완전하다.
Otto

우트? WP 플러그인입니다.
확실히

0

Easy Po 대신 Poedit를 사용하고 싶은 사람에게 적합합니다.

  1. Poedit 다운로드 및 설치 (최신 버전)
  2. 파일> 새로 이동하십시오. 새 탭이 나타나면 번역 언어를 선택하고 워드 프레스 테마의 루트 폴더에 저장 (ctrl + s)하십시오.

  3. 페이지에서 다음을 볼 수 있습니다- "소스에서 추출"을 클릭하십시오. 다음에 표시되는 탭은 붙여 넣은 링크에 사용 된 탭과 유사합니다. "프로젝트 정보"는 이제 "번역 속성"이며 "경로"와 "키워드"는 각각 "소스 경로"와 "소스 키워드"입니다.


0

같은 문제가 있습니다. 솔루션은 카탈로그를 추출 할 때 첫 번째 탭에 있고 UTF8을 다시 명령해야하며 세 번째 탭 "소스 키워드"에서 "새 항목"버튼 (두 번째 버튼)을 클릭하고 키워드를 입력하고 반복하십시오 각 키워드 (__, _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

추신 : 올바른 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

이 게시물을 시도해보십시오 .POT 또는 Poedit를 사용하여와 .po 파일을 만듭니다 . 워크 플로를 설명하고 .po 및 .pot 파일이 동일 함을 나타냅니다.

기본적으로 Poedit는 파일을 .po 파일로 저장하지만 두 파일이 동일하므로 .po 파일을 .pot 파일로 저장하도록 선택하면 문제를 해결할 수 있습니다.


WordPress 및 번역 시스템의 특정 변경 사항에는 작동하지 않습니다. 기껏해야 불완전하다.
Otto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.