Pootle导出错误的PHP数组文件

时间:2014-03-26 11:01:26

标签: php arrays pootle

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

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

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

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

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

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

我已经阅读了Pootle和Translation Toolkit的文档,我发现它通过了某种模板'产生那种糟糕的输出。

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

1 个答案:

答案 0 :(得分:0)

  

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

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

$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']);