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

4
我正在使用Flutter Intl Android Studio插件进行现成的本地化。但在我的情况下,我有这样的小部件:
Text.rich(
      TextSpan(
        text: 'It is time to',
        children: [
          TextSpan(
            text: 'Stay Relaxed',
            style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.bold,
            ),
          ),
        ],
      ),
    )

那么我如何翻译一条消息“现在是保持放松的时候”,并在小部件中使用?

1个回答

0
编辑:更多解释 这段文本不能作为一个整体处理。每个部分都需要单独处理。因为从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,
         ),
       ),
     ],
   ),
 ),
)

请问您能否详细说明一下tranlatedElementrelaxTextPrefix的含义? - Nayan Babariya
当然,我会在这里写下来并在问题中解释。文本不能作为一个整体处理。每个部分都需要单独处理。因为从TextSpans的角度来看,它们是不同的文本。所以你需要在arb文件中创建两个不同的文本。 - salihgueler
这不是一个好的解决方案,因为不同的语言使用不同的句子结构。当你把"I danced all night"翻译成德语时,变成了"I have all night danced",这需要不同数量的词语来强调"all night"。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接