使用最新的ICU I18N数据更新Symfony 1.4

时间:2014-05-20 11:34:41

标签: php internationalization symfony-1.4

我错误地修复了遗留Symfony 1.4项目以符合最新的ICU I18N数据。自2010年以来,世界各国的名单和货币等相关数据发生了一些变化。

我发现了Symfony的作者an articleblog post,脚本应该将ICU locale data-files转换为适合Symfony的格式。指令在那里,但我很难让转换脚本生成输出文件。我甚至不确定我必须使用哪些确切的输入文件才能使其正常工作。

有没有人有将ICU区域设置数据转换为Symfony 1.4格式的经验?

1 个答案:

答案 0 :(得分:0)

看起来ICU格式自Fabien上次使用以来有一些变化,所以你必须修改他的脚本。

对于要使用的ICU输入文件,您可以检查转换脚本实际读取的文件:

  • 数据/杂项/ metaZones.txt
  • 来自data / locales的所有文件
  • 来自data / curr的所有文件
  • 来自数据/区域的所有文件
  • 来自data / lang的所有文件
  • 来自数据/地区的所有文件

我注意到运行脚本存在一个问题。您应该从

更改第126行
$yml = str_replace('ExemplarCharacters:','ExemplarCharacters: |', $yml);

$yml = preg_replace('/ExemplarCharacters:\s*$/m', 'ExemplarCharacters: |', $yml);

由于并非所有带ExemplarCharacters:键的行都需要管道末尾。

metaZones.txt文件进行了一些更改,您应该考虑这些更改。我认为您需要做的是做Fabien之前做过的同样的研究:反序列化root.dat文件。 metaZones.yml的内容正在进行后处理并附加到此文件中(来自第202行的代码)。现在看来这个文件中有更多信息,而且格式不同会导致转换脚本失败。