Flutter中如何使用flutter_localization实现本地化

在Flutter项目中集成flutter_localization时遇到问题,按照官方文档配置后依然无法实现多语言切换。具体步骤已经完成:添加依赖、创建arb文件、配置MaterialApp的localizationsDelegates和supportedLocales。但运行应用时始终显示默认语言,无法根据系统语言自动切换。请问可能是什么原因导致的?是否需要额外设置或检查哪些关键点?

2 回复

在Flutter中使用flutter_localization实现本地化,步骤如下:

  1. 添加依赖:在pubspec.yaml中添加flutter_localizationsintl
  2. 创建ARB文件:在项目根目录创建l10n.yamllib/l10n目录,存放如app_en.arbapp_zh.arb等本地化文件。
  3. 生成代码:运行flutter gen-l10n自动生成本地化类。
  4. 配置MaterialApp:在MaterialApp中设置localizationsDelegatessupportedLocales,使用生成的AppLocalizations类调用本地化字符串。

示例代码:

MaterialApp(
  localizationsDelegates: AppLocalizations.localizationsDelegates,
  supportedLocales: AppLocalizations.supportedLocales,
  home: MyHomePage(),
)

使用:AppLocalizations.of(context)!.hello

更多关于Flutter中如何使用flutter_localization实现本地化的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用flutter_localizations实现本地化的步骤如下:

1. 添加依赖

pubspec.yaml 文件中添加:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: any

2. 创建本地化资源

  • 在项目根目录创建 l10n 文件夹
  • 创建 app_en.arbapp_zh.arb 文件

示例 app_en.arb

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

示例 app_zh.arb

{
  "helloWorld": "你好世界!"
}

3. 配置 pubspec.yaml

pubspec.yaml 中添加:

flutter:
  generate: true
  l10n:
    arb-dir: l10n
    synthetic-package: false

4. 配置 MaterialApp

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: AppLocalizations.localizationsDelegates,
      supportedLocales: AppLocalizations.supportedLocales,
      home: MyHomePage(),
    );
  }
}

5. 使用本地化字符串

Text(AppLocalizations.of(context)!.helloWorld)

6. 切换语言

Locale('zh') // 切换到中文

重要说明:

  • 运行 flutter gen-l10n 生成本地化类
  • 确保设备/模拟器的语言设置与支持的语言匹配
  • 支持的语言由 supportedLocales 列表定义

通过以上步骤即可实现Flutter应用的本地化功能。

回到顶部