使用intl_generator 包从代码中提取要国际化的字符串到单独的arb文件和根据arb文件生成对应语言的dart代码

详细教程:https://book.flutterchina.club/chapter13/intl.html

在Windows的PowerShell环境下执行:

1
dart run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/localization_intl.dart l10n-arb/intl_*.arb

报错信息:

1
2
FileSystemException: Cannot open file, path = 'l10n-arb/intl_*.arb' (OS Error: 文件名、目录名或卷标语法不正确。
, errno = 123)

原因:

在 PowerShell 中,通配符的处理方式与在其他命令行环境中有所不同。Windows下不会识别*通配符,上面写的intl_*.arb,导致错误。

解决办法:

请用git bash执行以上命令。

或者使用 Get-ChildItem 或 Get-Item 来处理Windows下的文件通配符。

1
2
3
Get-ChildItem l10n-arb -Filter intl_*.arb | ForEach-Object {
dart run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/localization_intl.dart $_.FullName
}

Reference

intl_translation:generate_from_arb with wildcard argument doesn’t work on Windows