Flutter 应用程序本地化:Arb 文件不可读错误

8 dart flutter

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

flutter_localizations:
    sdk: flutter
  intl: ^0.17.0 # Add this line
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个l10n.yaml文件并添加了以下内容:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
Run Code Online (Sandbox Code Playgroud)

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

{
    "helloWorld": "Hello World!",
    "@helloWorld": {
      "description": "The conventional newborn programmer greeting"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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.
Run Code Online (Sandbox Code Playgroud)

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
    .
  }
}
Run Code Online (Sandbox Code Playgroud)

bel*_*tas 0

错误显示在这里

C:\Users\Crosslynx25\Desktop\SW_Mobile_Platform\lib/l10n\app_en.arb
Run Code Online (Sandbox Code Playgroud)

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

arb-dir: lib\l10n
Run Code Online (Sandbox Code Playgroud)

会成功的。