【问题标题】:Updating Symfony 1.4 with latest ICU I18N data用最新的 ICU I18N 数据更新 Symfony 1.4
【发布时间】:2014-05-20 11:34:41
【问题描述】:

我正在修复旧的 Symfony 1.4 项目以符合最新的 ICU I18N 数据。自 2010 年以来,世界各国列表和货币等相关数据发生了一些变化。

我找到了 an article 和 Symfony 的作者的 blog post,其脚本应该将 ICU locale data-files 转换为适合 Symfony 的格式。说明在那里,但我无法让转换脚本生成输出文件。我什至不确定我必须使用哪些确切的输入文件才能使其工作。

有没有人有将 ICU 语言环境数据转换为 Symfony 1.4 格式的经验?

【问题讨论】:

    标签: php internationalization symfony-1.4


    【解决方案1】:

    自从 Fabien 上次使用以来,ICU 格式似乎发生了一些变化,因此您必须修改他的脚本。

    至于使用哪些ICU输入文件,您可以查看转换脚本实际读取了哪些文件:

    • data/misc/metaZones.txt
    • 数据/语言环境中的所有文件
    • 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 行)。现在这个文件中似乎有更多信息,并且格式不同,导致转换脚本失败。

    【讨论】:

    • 感谢您对此事的调查!我将在本周的过程中对此进行研究,并将发布我的发现。
    • 您的回答确实帮助我入门。除了metaZones.txt 文件,现在似乎一切都解析了。因此,即使还有一些工作要做,我还是要奖励你。
    • 很高兴我能帮上忙。如果你设法编写了一个新脚本来导入文件,也许你会想与仍在维护 Symfony 1.x 版本的人分享:github.com/LExpress/symfony1
    猜你喜欢
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2014-03-29
    相关资源
    最近更新 更多