You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XLIFF翻译文件中转义单引号(EasyAdmin3/Symfony7场景)

Symfony7/EasyAdmin3 翻译消息中单引号包裹占位符的正确处理

在EasyAdmin3+Symfony7项目中,给Flash消息的文件名添加单引号包裹时,遇到占位符无法正常解析的问题。

控制器设置Flash消息的代码:

$this->addFlash('success', new TranslatableMessage('import.success', [
    'filename' => 'import.csv',
]));

尝试过的XLIFF写法及问题:

<target>File {filename}-'{filename}'-&amp;apos;{filename}&amp;apos;-&quot;{filename}&quot; imported.</target>

页面实际显示结果:

File import.csv-{filename}-{filename}-"import.csv" imported.

可见单引号内的{filename}占位符未被替换,仅双引号包裹的占位符正常解析。


正确转义方式

Symfony翻译组件中,若要在翻译文本中使用单引号并让占位符正常解析,需要用两个连续的单引号('')来转义单个单引号。转义后的单引号会被解析为单个单引号,同时不会影响占位符的替换逻辑。

修改后的XLIFF代码:

<target>File ''{filename}'' imported.</target>

效果说明

设置完成后,页面会正确显示:

File 'import.csv' imported.

原因解析

  • 直接使用'{filename}'时,Symfony会将单引号内的内容视为纯文本,跳过占位符解析,因此显示{filename}。
  • 使用XML实体&amp;apos;转义单引号,最终仍会被解析为单个单引号,同样触发纯文本规则,占位符无法被替换。
  • 双引号不属于Symfony翻译组件的纯文本触发规则,因此&quot;{filename}&quot;能正常解析。

内容的提问来源于stack exchange,提问作者Falk Berger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:07:38