Lingo.dev + .arb (Flutter)

Lingo.dev CLI переводит файлы Flutter Application Resource Bundle (ARB), сохраняя метаданные, определения заполнителей и соответствие конвенциям локализации Flutter. CLI бесшовно работает с flutter gen-l10n, поддерживает определения типов заполнителей для автодополнения в IDE, сохраняет контекст разработчика и документацию, а также строго следует стандартам спецификации ARB.

Быстрая настройка

Настройте для стандартной структуры ARB файлов Flutter:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "flutter": {
      "include": ["lib/l10n/app_[locale].arb"]
    }
  }
}

Напоминание: [locale] — это заполнитель, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.

Перевод ARB файлов

npx lingo.dev@latest i18n

Сохраняет метаданные ARB, определения заполнителей и специфическое форматирование Flutter при переводе контента.

Возможности ARB для Flutter

Заполнители с типами

{
  "welcomeMessage": "Привет, {name}, у вас {count} сообщений",
  "@welcomeMessage": {
    "description": "Приветственное сообщение с именем пользователя и количеством",
    "placeholders": {
      "name": {
        "type": "String"
      },
      "count": {
        "type": "int"
      }
    }
  }
}

Формы множественного числа

{
  "itemCount": "{count, plural, =0{нет элементов} =1{один элемент} other{{count} элементов}}",
  "@itemCount": {
    "description": "Количество элементов",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}

Сохранение метаданных

Метаданные ARB (записи @key) остаются непереведёнными:

  • Описания: Контекст разработчика сохраняется
  • Заполнители: Определения типов поддерживаются
  • Примеры: Примеры использования остаются неизменными
  • Пользовательские атрибуты: Любые дополнительные метаданные сохраняются

Расширенная конфигурация

Несколько ARB файлов

"flutter": {
  "include": [
    "lib/l10n/app_[locale].arb",
    "lib/l10n/errors_[locale].arb"
  ]
}

Блокировка ключей метаданных

"flutter": {
  "include": ["lib/l10n/app_[locale].arb"],
  "lockedKeys": ["@@locale", "@@last_modified"]
}