5

我最近一直在使用 Pootle 来翻译一个小型 PHP 项目。我们的 i18n 文件是 php 数组,例如:

return array(
    'word.in' => 'en',
    'word.yes' => 'Sí',
    'word.no' => 'No',
    'word.with' => 'con',
);

所以我在 Pootle 的管理面板中创建了一个项目,并将源文件设置为 PHP 数组。之后我可以完美地上传和翻译文件。

当我尝试导出时出现问题,呈现的文件具有以下语法:

return array->'word.in'='for';
return array->'word.yes'='Yes';
return array->'word.no'='No';
return array->'word.with'='with';

哪个 afaik 甚至不是有效的 PHP 语法。

我通读了 Pootle 和翻译工具包的文档,发现它通过某种“模板”来生成糟糕的输出。

有什么想法可以解决这个问题并能够使用我上传的完全相同的语法导出我的 PHP 数组吗?非常感谢任何帮助!

4

1 回答 1

0

有什么想法可以解决这个问题并能够使用我上传的完全相同的语法导出我的 PHP 数组吗?

在返回语句之前,如果您需要将该数组实际写入文件并稍后再次读取,我会做这样的事情..

$arrayExport = var_export(
array(
    'word.in' => 'en',
    'word.yes' => 'Sí',
    'word.no' => 'No',
    'word.with' => 'con',
), true);

比写下 $arrayExport .. 例如:

file_put_contents($filePathName, 
'<?php $exportedArrayName = '.$arrayExport.";\n ?>", 
LOCK_EX);

...比其余的奇怪的 Pootle 和翻译...

但是如果您需要在一段时间后再次读取它而不存储它,请使用 $_SESSIONS 和序列化。

$_SESSION['exportedArray'] = serialize(array(
        'word.in' => 'en',
        'word.yes' => 'Sí',
        'word.no' => 'No',
        'word.with' => 'con',
    ));

从会话中读取..

$exportedArray = unserialize($_SESSION['exportedArray']);
于 2015-04-19T20:15:37.440 回答