Интернационализация флаттера - динамические струны - PullRequest
0 голосов
/ 11 сентября 2018

Я перевожу свое приложение на испанский с помощью пакета intl.

locales.dart

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}"

Тогда я бы назвал эту строку, передав это «имя» в качестве параметра, или что-то вроде этого. Это будет переводиться как "Hola, {$ name}" на испанском языке.

Можно ли использовать этот пакет intl?

1 Ответ

0 голосов
/ 11 сентября 2018

README пакета intl объясняет этот пример https://github.com/dart-lang/intl

Цель переноса сообщения в функцию - дать ему возможность есть параметры, которые могут быть использованы в результате. Строка сообщения разрешено использовать ограниченную форму интерполяции строки Dart, где можно использовать только параметры функции, и только в простом выражения. Локальные переменные не могут быть использованы, и ни один не может выражения с фигурными скобками. Только строка сообщения может иметь интерполяция. Имя, описание, аргументы и примеры должны быть литералами и не содержат интерполяции. Только параметр 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'));

Ниже этого раздела объясняются более сложные примеры, которые также касаются множественного числа и полов.

...