我最近一直在使用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数组与我上传的语法相同吗?任何帮助非常感谢!
答案 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']);