添加自定义格式支持
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.2,现已不再维护。
读本页的更新版本用于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娱乐下载\组件\翻译\加载程序\LoaderInterface;使用ob娱乐下载\组件\翻译\MessageCatalogue;类MyFormatLoader实现了LoaderInterface{公共函数负载($资源,$语言环境,$域=“消息”){$消息= [];$行=文件($资源);foreach($行作为$行) {如果(preg_match ('/\(([^\)]+)\)\(([^\)]+)\)/',$行,$匹配)) {$消息[$匹配[1]] =$匹配[2];}}$messageCatalogue=新MessageCatalogue ($语言环境);$messageCatalogue->add ($消息,$域);返回$messageCatalogue;}}
一旦创建,它可以用作任何其他加载器:
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娱乐下载\组件\翻译\自动倾卸车\FileDumper;使用ob娱乐下载\组件\翻译\MessageCatalogue;类MyFormatDumper扩展FileDumper{公共函数formatCatalogue(MessageCatalogue$消息,$域数组,$选项= []){$输出=”;foreach($消息->($域)作为$源= >$目标) {$输出= sprintf(。”(% s) (% s) \ n”,$源,$目标);}返回$输出;}受保护的函数getExtension(){返回“三”;}}
格式化消息目录
在某些情况下,您希望将转储内容作为响应发送,而不是将它们写入文件。要做到这一点,可以使用formatCatalogue
方法。在这种情况下,必须传递domain参数,该参数确定应该转储的消息列表。
的formatCatalogue ()方法创建输出字符串,该字符串将由dump ()方法的FileDumper类创建文件。倾倒器可以像任何其他内置倾倒器一样使用。在下面的例子中,YAML文件中定义的翻译消息被转储到一个自定义格式的文本文件中:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\翻译\加载程序\YamlFileLoader;$加载程序=新YamlFileLoader ();$翻译=$加载程序->负载(__DIR__.“/翻译/ messages.fr_FR.yaml”,“fr_FR”);$自动倾卸车=新MyFormatDumper ();$自动倾卸车->转储($翻译, (“路径”= >__DIR__.' /转储']);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。