Проблема языковой структуры в локализации флаттера?

Я использую локализацию во флаттере.

это текст на английском языке: placed for $date

это переведенный текст: $date का लागि राखिएको

как вы можете видеть, в тексте есть переменная (дата), и поскольку грамматическая структура для двух языков различается, переменная должна быть размещена в другом месте.

      AppLocalizations.of(context).placed_for + date.toString()
// The usual way of doing this does not work due to different placing of the date variable.

Как мне поступить в таком случае? Нужно ли мне писать собственную логику или уже есть способ справиться с таким случаем.

1 ответ

Решение

Я не привык работать с самими AppLocalizations, но, похоже, он работает так же, как intl.

Если это так, просто отредактируйте свои файлы arb, чтобы получить желаемые параметры:

      "placed_for": "placed for {date}", 
"placed_for": "{date}  का लागि राखिएको",

тогда вы сможете использовать его следующим образом:

      AppLocalizations.of(context).placed_for(date.toString())

Редактировать:

Вам также необходимо добавить определение заполнителя в ваш шаблон вилки. Пример:

      {
  "helloWorld": "Hello {name}!",
  "@helloWorld": {
    "description": "The conventional newborn programmer greeting",
    "placeholders": {
      "name": {}
    }
  }
}

Затем, после добавления placeholders, вы можете использовать сгенерированную строку, используя:

      AppLocalizations.of(context).helloWorld('Leandro'),

PS. Вы также можете добавить несколько заполнителей

Другие вопросы по тегам