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

Flutter中easy_localization如何让\n识别为换行符?

解决easy_localization中XML本地化字符串\n不解析为换行的问题

XML本地化文件中直接写入的\n会被当作普通文本字符,easy_localization默认不会自动解析这类转义序列,以下是几种可行的解决方法:

方法1:使用XML换行实体或直接换行

在XML文件中,用Unicode换行实体
替代\n,或者直接在字符串中换行,XML解析器会自动将其转换为实际的换行符:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
      <!-- 使用Unicode换行实体 -->
      <my_string_key>This is my Test String.&#10;It is ... by a new line!</my_string_key>
      <!-- 直接在XML中换行 -->
      <my_string_key_2>This is my Test String.
It is ... by a new line!</my_string_key_2>
</root>

调用tr("my_string_key")即可正常显示换行效果。

方法2:手动替换转义字符

在调用tr()获取字符串后,手动将转义的\n替换为实际换行符:

tr("my_string_key").replaceAll(r"\n", "\n")

如果多处需要使用,可以封装工具函数简化调用:

String trWithNewline(String key) {
  return tr(key).replaceAll(r"\n", "\n");
}

之后直接使用trWithNewline("my_string_key")即可。

方法3:全局配置字符串转换器

在初始化EasyLocalization时,添加全局字符串转换器,自动处理所有本地化字符串中的\n转义:

EasyLocalization(
  supportedLocales: [Locale('en'), Locale('zh')],
  path: 'assets/translations', // 你的本地化文件路径
  assetLoader: XmlAssetLoader(),
  stringTransformer: (String value) {
    return value.replaceAll(r"\n", "\n");
  },
)

配置后,所有通过tr()获取的字符串都会自动解析\n为换行,无需逐个处理。


内容的提问来源于stack exchange,提问作者F.M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:35:22