Как я могу генерировать PO-файл из массива php?

У меня есть файл языка php, в котором перечислены значения в массиве.

Я хочу преобразовать это в.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 строк. Это убило бы меня, чтобы вставить каждый из них в каталог po вручную. Есть ли что-то, что может автоматизировать это для меня?

Я пользуюсь поедить.

Спасибо, я новичок в этом, поэтому любое понимание будет полезно...

2 ответа

Решение

Первая запись - это заголовок файла, посмотрите, что нужно, в существующий файл gettext (-po). Побег, который я сделал с 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);

Попробуйте php2po, который преобразует массив PHP в PO-файлы, а также удостоверится, что все ваши экранированные значения верны. Затем PO-файл можно редактировать с помощью таких инструментов, как Poedit или Virtaal.

Другие вопросы по тегам