@flutter 多国语言翻译如何实现

在Flutter项目中需要实现多国语言翻译,请问有哪些推荐的方法或插件?目前了解到有flutter_localizations和intl,但不太清楚具体如何集成和使用。希望了解:1) 如何管理多语言JSON文件;2) 如何动态切换语言;3) 有没有支持自动翻译的方案?最好能提供一些实际代码示例。

2 回复

在Flutter中实现多国语言翻译,通常使用flutter_localizations包和intl库。步骤如下:

  1. 创建arb文件存储不同语言的翻译。
  2. 使用intl_translation生成dart代码。
  3. MaterialApp中配置localizationsDelegatessupportedLocales
  4. 通过AppLocalizations.of(context)调用翻译文本。

更多关于@flutter 多国语言翻译如何实现的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中实现多国语言翻译,推荐使用官方 flutter_localizations 包结合 intl 包。以下是实现步骤:

1. 添加依赖

pubspec.yaml 中添加:

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

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0

2. 创建 ARB 文件

在项目根目录创建 l10n 文件夹,并添加以下文件:

  • app_en.arb(英语):
{
  "helloWorld": "Hello World!",
  "@helloWorld": {
    "description": "Hello World 提示"
  }
}
  • app_zh.arb(中文):
{
  "helloWorld": "你好世界!"
}

3. 配置代码生成

pubspec.yaml 中启用代码生成:

flutter:
  generate: true

4. 在 MaterialApp 中配置

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'l10n/generated/l10n.dart';

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: const [
        S.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: S.delegate.supportedLocales,
      home: const MyHomePage(),
    );
  }
}

5. 使用翻译

在代码中调用:

Text(S.of(context).helloWorld)

6. 生成代码

运行命令生成本地化类:

flutter gen-l10n

关键特性:

  • 支持 140+ 种语言
  • 热重载即时生效
  • 支持文本插值(如:"hello": "Hello $name"
  • 自动生成类型安全的代码

切换语言:

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

这种方法提供了完整的国际化支持,包括文本方向、复数处理等复杂场景。

回到顶部