международная локализация, генерирующая пустой шаблон arb

#flutter #dart #localization

#flutter #dart #локализация

Вопрос:

Я использую intl в локализации flutter, и я создал класс AppLocalization следующим образом:

 import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../l10n/messages_all.dart';

class AppLocalization {
  static Future<AppLocalization> load(Locale locale) {
    final String name =
        locale.countryCode.isEmpty ? locale.languageCode : locale.toString();
    final String localeName = Intl.canonicalizedLocale(name);
    return initializeMessages(localeName).then((_) {
      Intl.defaultLocale = localeName;
      return AppLocalization();
    });
  }

  static AppLocalization of(BuildContext context) {
    return Localizations.of<AppLocalization>(context, AppLocalization);
  }

  // list of locales
  String get hello {
    return Intl.message('Hello',
        name: 'hello', desc: "Simple word for greeting ");
  }

}

class AppLocalizationDelegate extends LocalizationsDelegate<AppLocalization> {
  final Locale overriddenLocale;

  const AppLocalizationDelegate(this.overriddenLocale);

  @override
  bool isSupported(Locale locale) => ['en', 'ar'].contains(locale.languageCode);

  @override
  Future<AppLocalization> load(Locale locale) => AppLocalization.load(locale);

  @override
  bool shouldReload(LocalizationsDelegate<AppLocalization> old) => false;
}
 

затем запускаем эту команду для генерации intl_messages.шаблон arb

 flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n 

lib/locale/app_localization.dart
 

иногда он генерирует intl_messages.arb успешно работает с этим форматом

 {
  
  "@@last_modified": "2020-12-02T09:23:59.737528",
  "hello": "Hello",
  "@hello": {
    "description": "Simple word for greeting ",
    "type": "text",
    "placeholders": {}
  }
}
 

и много раз генерируйте пустой шаблон last_modified только с полем без каких-либо ошибок в терминале
, в чем проблема?

Ответ №1:

эта команда работает хорошо, хотя она имеет то же ключевое слово

 flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/locale/app_localization.dart
 

Я думаю, потому что в этом нет новой строки CR и LF символов, которые автоматически генерируются в блокноте
Я использовал notepad и показывал символы конечной строки для сравнения между двумя командами