Flutter 富内容本地化

标签 flutter dart internationalization

intl 包用于本地化 flutter 应用程序,但 Intl.message 仅返回 String

我怎样才能拥有丰富的内容本地化?

  1. Hello $name! ,并且只将$name设为粗体,考虑到hello和$name的顺序在不同的语言中可能不同
  2. 我已阅读服务条款并接受 ,并仅链接服务条款部分
  3. 在 [TEXT_INPUT] 天 中,[TEXT_INPUT] 后面有一个文本,前面有一个文本,但在某些语言中没有 2 个文本,后面或前面只有一个文本,或者 days[TEXT_INPUT]
  4. 之前,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/

相关文章:

java - 如何在 Wicket 6.0 中的区域设置更改后刷新有状态页面?

flutter - Dart语言演练-覆盖问题

flutter - 如何在 Flutter App 中拥有一个全局单例对象

flutter - 无法在 flutter 小部件中设置文本大小的样式

android - 我如何通过将鼠标悬停在Visual Studio Code之类的android studio中的小部件上来获取定义

timer - 如何将 onTab 信号从嵌套的有状态小部件发送到 main.dart

dart - 如何在编译的 Dart 中请求全屏

node.js - 如何在路由器中访问 i18n-express 字典?

javascript - 如何在 js 中验证字符串仅包含来自多个 unicode 范围的字符

flutter - 语言更改时强制 localeResolutionCallback