【问题标题】:Internationalization Fluter by intl国际化 Fluter by intl
【发布时间】:2019-08-24 21:38:11
【问题描述】:

我学会了颤振。我使用 intl 构建了一个国际化应用程序 依赖(关注this

  1. 我很好地运行了第一个命令(没有错误消息):
flutter packages pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart

生成了 3 个文件:

  1. 我需要在运行下一个命令之前创建 intl_{locale}.arb 文件

  2. 下一个命令:

flutter 包发布运行 intl_translation:generate_from_arb \ --output-dir=lib/l10n --no-use-deferred-loading \ lib/main.dart lib/l10n/intl_*.arb

虽然生成了相应的消息(messages_en.dart)文件,但它总是返回消息:

No @@locale or _locale field found in intl_en, assuming 'en' based on the file name.
No @@locale or _locale field found in intl_messages, assuming 'messages' based on the file name.

如何在没有消息的情况下运行第二个命令,因为我认为它们是意外消息?

【问题讨论】:

  • 你提到过supportedLocales吗? supportedLocales: [ const Locale('en', 'US'), // 英语 const Locale('he', 'IL'), // 希伯来语 // ... 应用支持的其他语言环境],
  • 是的,我在 main.dart 中提到了它们。也许他们是消息而不是错误
  • 您需要获取一组类似的文件(在这种情况下为en + es): intl_es.arb intl_en.arb intl_messages.arb messages_all.dart messages_es.dart messages_en.dart messages_messages.dart
  • 是的,已经。我有文件,但我总是在 intl_messages 中看到消息 No @@locale or _locale field found,假设基于文件名的“消息”。这是我现在的问题。

标签: dart flutter intl


【解决方案1】:

您应该在每个文件中写入以下内容。然后flutter会自动识别语言。

{
  "@@locale": "en",
  "title": "Flutter Example App",
  "@title": {
    "type": "text",
    "placeholders": {}
  }
}

【讨论】:

    【解决方案2】:

    1.

    flutter packages pub run intl_translation:generate_from_arb \ --output-dir=lib/l10n --no-use-deferred-loading \ lib/main.dart lib/l10n/intl_*.arb
    

    应该改为:

    flutter pub pub run intl_translation:extract_to_arb --output-dir=lib/l10n ****lib/DemoLocalizations.dart****
    

    (其中 ****lib/DemoLocalizations.dart**** 应更新为您根据您创建的步骤创建此文件的文件。

    2.

    您将生成字符串。这些需要复制到 intl*.arb

    3.

    那么你应该运行:

    flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n    --no-use-deferred-loading ****lib/DemoLocalizations.dart**** lib/l10n/intl_*.arb
    

    【讨论】:

    • 它不起作用。第一个:我更新了:flutter pub pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main_internationalization.dart --- 只有一个文件生成(intl_messages.arb)第二个命令没有运行:flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main_internationalization.dart lib/l10n/intl_*.arb 返回错误:pastebin.com/90snxBhc
    • 兄弟,我认为这只是我下载的响应消息 bcz + 使用指南 (flutter.dev/docs/development/accessibility-and-localization/…) 中的源代码运行命令。它返回了相同的消息。
    【解决方案3】:

    在您提到的步骤 1. 和 2. 之间,您应该将新字符串复制到 intl*.arb。

    【讨论】:

    • 只有一个文件 intl_messages.arb 文件是在我运行第一个命令后生成的。该文件的内容已经与指南源代码相同。你什么意思?
    • hmm,缺少创建 intl_{locale}.arb 文件。我已经更新了我的问题。我怎样才能运行 2nd 而不会出现错误,例如:在 intl_en 中找不到 @@locale 或 _locale 字段,假设基于文件名的“en”。谢谢!!!
    猜你喜欢
    • 2016-06-27
    • 2016-04-08
    • 2017-09-13
    • 2016-12-25
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2011-04-15
    • 2015-08-31
    相关资源
    最近更新 更多