1

WordPress管理者でのみ使用されるすべてのエントリをPOファイルから除外する必要があります(ユーザー向けの文字列のみを翻訳できるようにするため)。つまり、特定のエントリのすべての参照に文字列 "../admin"が含まれている場合(つまり、 "#:../admin"で始まる場合)、出力ファイルにそれらを含めたくありません

ツールには、grep、sed、Windowsベースなど、何でもかまいません。何か案は?

(これを実現する他の方法のアイデアは大歓迎ですが、翻訳のためにユーザー向けの文字列を除外して、POファイルに配置することを考えています。母国語は英語であり、すべての管理者向けのコンテンツを英語のままにしておくことができます。)

これを除外します:

#:../admin/add_new_packet.php:64
#:../ admin_processing / add_new_packet_processing.php:9
msgid「キャンセル」
msgstr ""

これを残してください:

#:../ header-employer.php:81
#:../admin/add_new_packet.php:64
msgid"ログアウト"
msgstr ""

なじみのない人のためのPOファイルのフォーマットは次のとおりです。

4

1 に答える 1

1

を使用した 1 つのソリューションawk。の内容script.awk:

BEGIN {
    ## Separate records by one or more blank lines.
    RS = ""

    ## Each line will be one field. Both for input and output.
    FS = OFS = "\n"
}

## For every paragraph...
{
    ## Flag: If 0, print current record of PO file. If 1, don't
    ## print it.
    admin = 0 

    ## Traverse all lines of each record. If matches '#: ../admin'
    ## set flag and end processing.
    for (i = 1; i <= NF; i++ ) { 
        if ( $i ~ /^#: *\.\.\/admin\/?/ ) { 
            admin = 1 
            break
        }   
    }   

    ## Print only if flag hasn't been set.
    if ( ! admin ) { 
        print $0 "\n"
    }   
}

Lev Levitskyがコメントで提案したように、入力も出力も提供しなかったため、ソリューションを取得するためにスクリプトがどのように動作するかを推測し、それをテストして動作を確認するのは簡単ではありません。

于 2012-07-16T22:33:27.443 に答える