【问题标题】:Flutter App Localization : Arb file not readable errorFlutter App Localization:Arb 文件不可读错误
【发布时间】:2022-06-17 06:27:11
【问题描述】:

我正在尝试让我的应用支持本地化。我希望我的应用程序支持 2 种语言:EnglishHindi。所以我在我的pubspec.yaml 中添加了以下包:

flutter_localizations:
    sdk: flutter
  intl: ^0.17.0 # Add this line

然后我制作了一个l10n.yaml 文件并添加了这个:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

我还制作了这样的app_en.arb 文件:

{
    "helloWorld": "Hello World!",
    "@helloWorld": {
      "description": "The conventional newborn programmer greeting"
    }
}

当我运行这段代码时,它给了我一个错误:

Generating synthetic localizations package failed with 1 error:

Exception: The 'template-arb-file', LocalFile: 'C:\Users\Crosslynx25\Desktop\SW_Mobile_Platform\lib/l10n\app_en.arb', is not readable.
Please ensure that the user has read permissions.

main.dart文件

import 'package:ble_app_flutter/screens/home_screen.dart';
import 'package:ble_app_flutter/screens/otp_screen.dart';
import 'package:ble_app_flutter/screens/splash_screen.dart';
import 'package:ble_app_flutter/utils/colors.dart';
import 'package:ble_app_flutter/l10n/L10n.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:lottie/lottie.dart';
import 'country_codes.dart'
as CountryCodes;
import 'screens/driver/driver_home_screen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State < MyApp > createState() => _MyAppState();
}

Map < int, Color > myTheme = {
  50: Color.fromRGBO(9, 65, 155, .1),
  100: Color.fromRGBO(9, 65, 155, .2),
};

class _MyAppState extends State < MyApp > {
  // This widget is the root of your application.
  MaterialColor myColor = MaterialColor(0xFF09419b, myTheme);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BLE App gkhglkjhkl',
      debugShowCheckedModeBanner: false,
      supportedLocales: L10n.all,
      //     localizationsDelegates: [
      //   AppLocalizations.delegate, // Add this line
      //   GlobalMaterialLocalizations.delegate,
      //   GlobalWidgetsLocalizations.delegate,
      //   GlobalCupertinoLocalizations.delegate,
      // ],
      theme: ThemeData(
        primarySwatch: myColor,
      ),
      home: new Login(),
    );
  }
}

class Login extends StatefulWidget {
  @override
  State < Login > createState() => _LoginState();
}

class _LoginState extends State < Login > {
  // const Login({
  var selectedCountry = "91";
  var phoneNumber = "";

  @override
  Widget build(BuildContext context) {
    .
    . //some code
    .
  }
}

【问题讨论】:

  • 请将您的 main.dart 文件发布到您已配置本地化的位置
  • @Dev 添加了main.dart文件,请检查。
  • l10n.yaml 基本目录或 lib 内部的位置是什么?它应该是基本目录。
  • 我无法使用颤振 v2.10.5 解决该问题。更新到 v3.0.0 后,此问题仍然存在。然而:我刚开始我的项目。所以我删除了所有内容并创建了一个新项目。现在它正在使用 v3.0.0 工作。我不知道这是否适合你。但我想在旧的颤振版本中最初创建项目时颤振存在错误/问题,现在已在 v3.0.0 中修复。

标签: flutter dart


【解决方案1】:

错误显示在这里

C:\Users\Crosslynx25\Desktop\SW_Mobile_Platform\lib/l10n\app_en.arb

您使用的是 Windows,因此您应该在路径中使用 \ 而不是 /。所以我想像这样修改你的l10n.yaml

arb-dir: lib\l10n

会成功的。

【讨论】:

  • 不能为我解决问题。你测试过这个修复吗?它是否使用您的修复描述在您的系统上工作?我得到了...\lib%5Csrc%5Clocalization'', does not exist.,即使它可以工作,也只是一种解决方法,因为您可能希望能够一起工作,无论开发人员使用 Windows 还是 Linux。
【解决方案2】:

这发生在我身上,然后我发现文件实际上是 app_en.arb(名称前有一个空格)。这导致它找不到。

可以通过复制日志中写入的路径进行测试,看看Windows能否找到该文件。

已针对here 中的误导性消息创建了一个问题。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2021-11-18
    • 2021-07-21
    • 2021-03-26
    • 2020-08-28
    • 2022-11-30
    • 2021-11-20
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多