添加自定义格式支持
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
添加自定义格式支持
有时,你需要处理自定义格式的翻译文件。翻译组件是足够灵活以支持这一点。只创建一个加载器加载(翻译),可选的翻车机(转储翻译)。
假设您有一个自定义的格式翻译使用一行定义为每个消息翻译和括号包装和消息的关键。翻译文件是这样的:
1 2 3
(欢迎)(接待处)(再见)(再见)(你好)(你好)
创建一个自定义加载程序
定义一个自定义加载程序能够读取这些文件,您必须创建一个新类,它实现了LoaderInterface。的load ()方法将得到一个文件名和解析成一个数组。然后,它将创建目录,将返回:
1 2 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类将节省几行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用ob娱乐下载\组件\翻译\MessageCatalogue;使用ob娱乐下载\组件\翻译\自动倾卸车\FileDumper;类MyFormatDumper扩展FileDumper{公共函数formatCatalogue(MessageCatalogue美元消息,美元域数组,美元选项=数组()){美元输出=”;foreach(美元消息- >(美元域)作为美元源= >美元目标){美元输出= sprintf (。”(% s) (% s) \ n”,美元源,美元目标);}返回美元输出;}受保护的函数getExtension(){返回“三”;}}
格式消息目录
在某些情况下,您想要发送转储内容作为响应,而不是写在文件中。要做到这一点,您可以使用formatCatalogue
方法。在这种情况下,您必须通过域参数,决定了消息的列表应该抛弃。
的formatCatalogue ()方法创建输出的字符串,将使用的dump ()FileDumper类的方法来创建该文件。可以使用自动倾卸车像其他内置翻斗车。在接下来的例子中,翻译YAML文件中定义的消息倒到一个文本文件,自定义格式:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\翻译\加载程序\YamlFileLoader;美元加载程序=新YamlFileLoader ();美元目录=美元加载程序- >负载(__DIR__。“/翻译/ messages.fr_FR.yml”,“fr_FR”);美元自动倾卸车=新MyFormatDumper ();美元自动倾卸车- >转储(美元目录,数组(“路径”= >__DIR__。' /转储'));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。