intl
包用于本地化 flutter 应用程序,但 Intl.message
仅返回 String
我怎样才能拥有丰富的内容本地化?
Hello $name!
,并且只将$name
设为粗体,考虑到hello和$name的顺序在不同的语言中可能不同我已阅读服务条款并接受
,并仅链接服务条款
部分在 [TEXT_INPUT] 天
中,[TEXT_INPUT] 后面有一个文本,前面有一个文本,但在某些语言中没有 2 个文本,后面或前面只有一个文本,或者days
在[TEXT_INPUT]
之前,
in
在之后
最佳答案
看看 styled_text包裹。您可以从格式中单独指定文本(内容),这允许您使用标准的 i18n 方法。
文本格式指定为标签,您可以全局定义(例如在资源类中)然后在任何地方使用。对我来说听起来是个不错的解决方案。
示例(来自自述文件):
StyledText(
text: 'Test: <bold>bold</bold> text.',
tags: {
'bold': const StyledTextTag(style: const TextStyle(fontWeight: FontWeight.bold)),
},
)
将显示为:
测试:粗体文本。
如果您使用 i18n 包和资源类实例 R
作为标签,这可能看起来像:
StyledText(
text: S.testBoldText,
tags: R.styledTextTags,
);
请记住,标签需要在翻译中保留。
关于Flutter 富内容本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69515629/