国际本地化生成空套利模板
intl localization generating empty arb template
我在 flutter 本地化中使用 intl 并且我创建了 AppLocalization class 如下:
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
字段的空模板,终端中没有任何错误
有什么问题?
虽然关键字相同,但此命令运行良好
flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/locale/app_localization.dart
我想是因为这个没有在记事本中自动生成的新行 CR
和 LF
符号
我使用记事本++并显示结束行符号来比较两个命令
我在 flutter 本地化中使用 intl 并且我创建了 AppLocalization class 如下:
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
字段的空模板,终端中没有任何错误
有什么问题?
虽然关键字相同,但此命令运行良好
flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/locale/app_localization.dart
我想是因为这个没有在记事本中自动生成的新行 CR
和 LF
符号
我使用记事本++并显示结束行符号来比较两个命令