如何用POEDIT创建.pot文件?

时间:2014-06-11 作者:user1981248

今天我花了几个小时做了一件看起来很简单的事情,那就是创建一个。我正在创建的Wordpress主题的pot文件。我读过Smashing Magazine article, 这个Tutsplus article 关于如何使用Poedit 创建。为主题创建pot文件,然后创建。mo和。po文件,但遗憾的是,我仍然停留在第一步。

我安装了Poedit,发现UI和所有教程中显示的完全不同,似乎并没有更多的创建选项。pot文件。唯一可用的是创建。采购订单和。现有的mo文件。pot文件,这不是我现在需要的。

那么,有人能告诉我怎样才能创造吗。pot文件使用Poedit或其他一些方法,我将非常感激。

谢谢

11 个回复
最合适的回答,由SO网友:ٍShagrouni 整理而成

你可以试试Eazy Po.

从文件菜单中选择“从源代码文件新建…”

SO网友:Jasper

下面是创建的方法。在OS X上使用Poedit(免费版,1.6.10版)为您的主题创建pot文件。

最佳做法是将语言文件保存在主题目录中名为“languages”的文件夹中。如果尚未创建,请在开始之前创建它。

在Poedit中:

在“文件”菜单中选择“新建”,在“目录”菜单中选择主题中使用的语言(可能是英语),在“翻译属性”选项卡中输入项目信息,转到第三个选项卡“源关键字”,单击“新建项”按钮(第二个按钮),输入关键字并对每个关键字重复此操作(__, _e, esc_attr_e, 等)单击“文件”菜单底部的“确定”按钮,选择“另存为…”

  • 在主题目录的“languages”文件夹中将文件另存为“yourthemename.pot”(确保将.pot扩展名添加到文件名中,因为默认情况下它将另存为.po)
  • 在“Catalog”菜单中再次选择“Properties”(属性)
  • 转到第二个选项卡“Sources paths”(源路径../ (pot文件保存在子目录中,这样您就可以将基目录设置为父目录,即主题目录)
  • 单击“路径”旁边的“新建项目”按钮并输入. (这将使其扫描您的主题目录及其子目录)单击项目窗口底部的“确定”按钮,单击“更新”(顶部的第二个图标)
  • 在“文件”菜单中单击“保存”,完成:)

  • SO网友:lhermann

    我发现现在最简单的方法是使用WP-CLI. 导航到主题或插件并执行以下命令(安装WP-CLI后):

    wp i18n make-pot . languages/my.pot
    
    (参见documentation 命令的)

    然后,您可以使用Poedit或任何其他方便的翻译工具编辑此文件。

    SO网友:Otto

    您可以使用WordPress工具完成此操作,无需POEdit。

    首先,执行svn签出http://develop.svn.wordpress.org/trunk/:

    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

    这将创建主题名。pot文件。在任何你喜欢的标准翻译工具中使用它。

    这更好,因为它使用WordPress代码来查找i18n函数,所以您不会错过任何一个函数。此外,它将查找并添加主题标题信息等内容,如名称、描述等。这也允许对这些信息进行翻译。确保在样式中包含“文本域:”标题。css为那些工作。

    SO网友:Ihor Vorotnov

    您可以将外部工具与Loco Translate 插件。我大约一年前就试过了,从那以后就再也没用过POEdit。在您的测试站点上安装它,并通过单击创建POT文件。

    SO网友:Toheeb

    对于那些喜欢使用Poedit而不是Easy Po的人。

    1. Download (最新版本)编辑并安装转到文件>新建。将出现一个新选项卡,选择翻译语言并保存(ctrl+s)到wordpress主题的根文件夹。

      在您将看到的下一页上,单击“从源代码中提取”。接下来将看到的选项卡与粘贴的链接中使用的选项卡类似。“项目信息”现在是“翻译属性”,“路径”和“关键字”分别是“源路径”和“源关键字”

    SO网友:user105155

    我也有同样的问题,解决方案是在第一个选项卡中提取目录时,应放入UTF8推荐,并在第三个选项卡“源关键字”中,单击“新建项目”按钮(第二个按钮),输入关键字并对每个关键字重复此操作(\\uuuu,\\u e)。

    SO网友:l2aelba

    As Otto said :

    For Mac users, 我会这样做:

    安装后svn co http://develop.svn.wordpress.org/trunk/ wpdev

    So...

    <制造商/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

    SO网友:Siên

    脚本自动创建。po文件,自动添加代码中的所有文本添加load\\u theme\\u textdomain(\'my-textdomain\',DIR.\'/语言/\')
  • 创建文件夹wp-content/themes/MY\\u-THEME/languages(将您的语言.mo文件添加到此文件夹)
  • 创建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(); 
    
    <转到youdomain/wp-content/themes/MY_THEME/languages/po.php 并创建。采购订单文件副本wp-content/themes/MY_THEME/languages/[LANG].po 到桌面并使用打开Poedit -&燃气轮机;编译MO->;复制[语言]。任务单收件人languages 文件夹用作echo __(\'This text\',\'you-textdomain\');

    SO网友:tomyam

    要创建的另一个替代解决方案。对于喜欢NPM的人来说,pot文件是wp-pot. 它提供了一系列选项,您可以根据自己的喜好进行调整。设置非常简单。

    SO网友:Andrew

    请尝试以下帖子:Create a .pot or .po File using Poedit. 它描述了工作流,并指示。采购订单和。pot文件相同。

    默认情况下,Poedit将文件另存为。po文件,但由于这两个文件完全相同,您只需选择保存即可绕过此问题。采购订单文件作为。pot文件

    结束

    相关推荐

    Plugin Localization

    我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette