我正在使用intl包将我的应用程序翻译成西班牙语.

地点.飞奔

class AppLocale {
...
   String get folder => Intl.message("Folder", name: 'folder');
...
}

Messages_es.Dart

class MessageLookup extends MessageLookupByLibrary {
      get localeName => 'es';

      final messages = _notInlinedMessages(_notInlinedMessages);
      static _notInlinedMessages(_) => <String, Function> {
            "folder": MessageLookupByLibrary.simpleMessage("Carpeta"),
      };
}

我使用以下代码调用它:

AppLocale.of(context).folder

它工作得很好.

但是,我需要创建"动态"字符串.例如:

您好,{$name}

然后我会调用这个字符串,将这个"name"作为参数传递,或者类似这样的东西.它在西班牙语中将被翻译为"您好,{$name}".

可以使用这个intl软件包吗?

推荐答案

intl软件包的自述文件解释了该示例 https://github.com/dart-lang/intl

将消息包装在函数中的目的是允许它 具有可在结果中使用的参数.消息字符串为 允许使用受限形式的DART字符串插值,其中 只能使用函数的参数,并且只能使用简单的 表情.不能使用局部变量,也不能使用 带大括号的表达式.只有消息字符串才能具有 插值.name、desc、args和examples必须是文字和 不包含插值.只有args参数可以引用 变量,并且它应该准确地列出函数参数.如果你 正在传递数字或日期,并且您希望设置它们的格式,则必须执行以下操作 在函数外部设置格式,并将带格式的字符串传递到 这条信息.

greetingMessage(name) => Intl.message(
      "Hello $name!",
      name: "greetingMessage",
      args: [name],
      desc: "Greet the user as they first open the application",
      examples: const {'name': "Emily"});
  print(greetingMessage('Dan'));

本节下面有更复杂的例子,也涉及复数和性别.

Flutter相关问答推荐

Flutter -如何从布局填充(对称水平)中排除小部件?

如何增加容器高度?

Android元数据为1.9.0,预期版本为1.7.1,如何解决flutter应用程序构建失败问题?

如何从模型列表中生成DropdownButtonFormField?

Fighter:基于ChangeNotifier状态动态更新AppBar中的图标

blocTest错误:没有从`when()`中调用方法存根

与FTPS连接时出现Flutter FTPConnect HandshakeException错误

从.gitignore中排除.fvm/fvm_config.json

如何确定Flutter 中的文本 colored颜色 ?

Ffltter Firebase向用户添加公司

Flutter飞溅屏幕即使在修改后仍显示默认徽标和背景色

使用 Flutter 显示/隐藏带有下拉抽屉动画的小部件

为 flutter app/firebase 保存 chatgpt api-key 的正确方法是什么

'type' Icon '不是类型' IconData '的子类型

Flutter ListView 在 Column 中工作但在 Row 中不工作

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

如何更改中心的圆形进度指示器

如何在Flutter中制作带有波浪边框的圆圈来显示图像?

Flutter - 检测手指何时进入容器

如何从 Flutter 中的列表中提取 JSON?