我正在构建一个具有多种语言(阿拉伯语、英语和法语)的应用程序。英语到阿拉伯语的主要单词是
'Weekly': 'اسبوعيا',
'Monthly': 'شهريا',
'Yearly': 'سنويا',
'Once': 'مرة واحدة',
'Daily': 'يومياً',
阿拉伯语到法语是
//french
case "مرة واحدة":
return "Une fois";
case "يومياً":
return "Quotidien";
case "سنويا":
return "Annuel";
case "شهريا":
return "Mensuel";
case "اسبوعيا":
return "Hebdomadaire";
这是我的正则表达式
final RegExp english = RegExp(r'^[a-zA-Z]+');
final RegExp arabic = RegExp(r'^[\u0621-\u064A]+');
final RegExp french = RegExp(r'^[\u00C0-\u017F]+');
当我尝试检测 Une fois 时,我得到的结果是 en 而不是 fr,那么我该怎么办?
为 Flutter 应用添加本地化,您可以按照以下步骤操作:
添加依赖项:
在您的
pubspec.yaml
文件中,添加 flutter_localizations
包(包含在 Flutter SDK 中)和 intl 包(提供国际化和本地化支持):
dependencies:
flutter:
sdk: flutter
intl: ^0.17.0
运行 flutter pub get 安装软件包。
在项目的根目录中创建一个名为 l10n 的新目录。在此目录中,为您想要支持的每种语言创建 JSON 文件。文件名应遵循 app_.json 格式,其中是语言和国家/地区代码(例如 en_US、es_ES)。例如:
l10n/
app_en_US.json
app_es_ES.json
每个 JSON 文件应包含每个本地化字符串的键值对。例如,app_en_US.json 可能如下所示:
{
"title": "Hello World",
"greeting": "Welcome to our app!"
}
在 main.dart 文件中或设置应用程序的任何位置,导入必要的包并配置本地化设置:
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
import 'l10n/app_localizations.dart'; // Import your localization class
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateTitle: (BuildContext context) =>
AppLocalizations.of(context)!.title, // Use localized title
localizationsDelegates: [
AppLocalizations.delegate, // Add your localization delegate
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
Locale('en', 'US'), // Add supported locales
Locale('es', 'ES'),
],
home: MyHomePage(),
);
}
}