添加自定义格式支持
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
添加自定义格式支持
有时,您需要处理翻译文件的自定义格式。Translation组件足够灵活,可以支持这一点。只需创建一个加载器(来加载翻译)和一个转储器(来转储翻译)。
假设您有一个自定义格式,其中每个翻译使用一行来定义翻译消息,并使用括号来包装键和消息。翻译文件应该是这样的:
1 2 3
(欢迎)(accueil)(再见)(au revoir)(你好)(bonjour)
创建自定义加载器
要定义能够读取这些类型文件的自定义加载器,必须创建一个实现类的新类LoaderInterface.的load ()方法将获取文件名并将其解析为数组。然后,它将创建返回的目录:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
使用ob娱乐下载\组件\翻译\MessageCatalogue;使用ob娱乐下载\组件\翻译\加载程序\LoaderInterface;类MyFormatLoader实现了LoaderInterface{公共函数负载($资源,$语言环境,$域=“消息”){$消息=数组();$行=文件($资源);foreach($行作为$行) {如果(preg_match ('/\(([^\)]+)\)\(([^\)]+)\)/',$行,$匹配)) {$消息[$匹配[1]] =$匹配[2];}}$目录=新MessageCatalogue ($语言环境);$目录->add ($消息,$域);返回$目录;}}
一旦创建,它可以用作任何其他加载器:
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\翻译\翻译;$翻译=新翻译(“fr_FR”);$翻译->addLoader (“my_format”,新MyFormatLoader ());$翻译->addResource (“my_format”,__DIR__.“/翻译/ messages.txt”,“fr_FR”);var_dump ($翻译->反式(“欢迎”));
它会打印出来“招待”.
创建自定义转储器
也可以为您的格式创建一个自定义转储器,这在使用提取命令时非常有用。方法的新类实现DumperInterface必须创建。若要将转储内容写入文件,请扩展FileDumper类将保存几行代码:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
使用ob娱乐下载\组件\翻译\MessageCatalogue;使用ob娱乐下载\组件\翻译\自动倾卸车\FileDumper;类MyFormatDumper扩展FileDumper{受保护的函数格式(MessageCatalogue$消息,$域=“消息”){$输出=”;foreach($消息->($域)作为$源= >$目标) {$输出= sprintf(。”(% s) (% s) \ n”,$源,$目标);}返回$输出;}受保护的函数getExtension(){返回“三”;}}
的format ()方法创建输出字符串,该字符串将由dump ()方法的FileDumper类创建文件。倾倒器可以像任何其他内置倾倒器一样使用。在下面的例子中,YAML文件中定义的翻译消息被转储到一个自定义格式的文本文件中:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\翻译\加载程序\YamlFileLoader;$加载程序=新YamlFileLoader ();$目录=$加载程序->负载(__DIR__.“/翻译/ messages.fr_FR.yml”,“fr_FR”);$自动倾卸车=新MyFormatDumper ();$自动倾卸车->转储($目录,数组(“路径”= >__DIR__.' /转储'));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。