【发布时间】:2022-06-17 06:27:11
【问题描述】:
我正在尝试让我的应用支持本地化。我希望我的应用程序支持 2 种语言:English 和 Hindi。所以我在我的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 中修复。