如何使用 TextSpan 小部件本地化文本?

问题描述 投票:0回答:1

我正在使用

Flutter Intl
android studio 插件进行现成的本地化。 但在我的场景中,我有这样的小部件,

Text.rich(
      TextSpan(
        text: 'It is time to',
        children: [
          TextSpan(
            text: 'Stay Relaxed',
            style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.bold,
            ),
          ),
        ],
      ),
    )

那么我如何翻译一条消息“是时候保持放松了”并在

Text.rich
小部件中使用?

flutter dart localization
1个回答
-4
投票

编辑 2:这是对上述问题的回答,正如前面提到的,它并不适合所有人,答案是 3 年前的。我们现阶段为此建立了库。

编辑:更多解释 文本不能作为一个整体进行处理。每个部分都需要单独处理。因为从 TextSpans 的角度来看,这些是不同的文本。因此,您需要在 arb 文件中创建两个不同的文本。

从 Flutter Intl 的角度来看,这是两个不同的组件。 TextSpan 有自己的绘图视角。这就是为什么您需要为这些项目创建两个不同的组件。

有像 https://pub.dev/packages/localized_rich_text 这样的软件包,但我没有使用它。在我们的应用程序中,我像下面这样使用它。

Flutter Intl 创建本地化元素如下:

AppLocalizations.of(context).tranlatedElement;

//or
AppLocalizations.current.tranlatedElement;

所以你的代码应该像下面这样

Text.rich(
   TextSpan(
     text: AppLocalizations.current.relaxTextPrefix,
     children: [
       TextSpan(
         text: AppLocalizations.current.relaxTextSuffix,
         style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.bold,
         ),
       ),
     ],
   ),
 ),
)
© www.soinside.com 2019 - 2024. All rights reserved.