Flutter多语言翻译插件uni_translate的使用

uni_translate 是一个通用的多语言翻译客户端插件,可以轻松实现Flutter应用的多语言支持。通过该插件,您可以快速将应用程序翻译成多种语言,并且支持动态切换语言。

插件安装

首先,在您的 pubspec.yaml 文件中添加 uni_translate 依赖:

dependencies:
  uni_translate: ^最新版本号

然后运行以下命令以更新依赖项:

flutter pub get

使用示例

以下是一个完整的示例,展示如何在Flutter应用中使用 uni_translate 插件进行多语言翻译。

步骤 1:初始化插件

main.dart 文件中初始化 uni_translate 插件,并设置默认语言。

import 'package:flutter/material.dart';
import 'package:uni_translate/uni_translate.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化插件并设置默认语言
  await UniTranslate.init(
    defaultLanguage: 'en', // 默认语言为英语
    supportedLanguages: ['en', 'zh'], // 支持的语言列表
    translations: {
      'en': {
        'hello': 'Hello',
        'welcome': 'Welcome to the app!',
      },
      'zh': {
        'hello': '你好',
        'welcome': '欢迎使用本应用!',
      },
    },
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'UniTranslate Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

步骤 2:创建多语言文本组件

接下来,在 MyHomePage 中使用 UniTranslate 提供的 Text 组件来显示多语言文本。

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 当前语言状态
  String currentLanguage = 'en';

  // 切换语言的方法
  void changeLanguage(String language) {
    setState(() {
      currentLanguage = language;
      UniTranslate.setLocale(language); // 动态切换语言
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('UniTranslate Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 显示多语言文本
            UniTranslateText(
              key: 'hello',
              style: TextStyle(fontSize: 24),
            ),

            SizedBox(height: 20),

            // 欢迎消息
            UniTranslateText(
              key: 'welcome',
              style: TextStyle(fontSize: 18),
            ),

            SizedBox(height: 20),

            // 切换语言按钮
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                ElevatedButton(
                  onPressed: () => changeLanguage('en'),
                  child: Text('English'),
                ),
                ElevatedButton(
                  onPressed: () => changeLanguage('zh'),
                  child: Text('中文'),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter多语言翻译插件uni_translate的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter多语言翻译插件uni_translate的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


uni_translate 是一个用于 Flutter 的多语言翻译插件,它可以帮助开发者轻松实现应用的多语言支持。通过 uni_translate,你可以将应用中的文本翻译成多种语言,并且支持动态切换语言。

安装 uni_translate

首先,你需要在 pubspec.yaml 文件中添加 uni_translate 依赖:

dependencies:
  flutter:
    sdk: flutter
  uni_translate: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

基本使用

  1. 初始化翻译器

    在使用 uni_translate 之前,你需要初始化一个翻译器。uni_translate 支持多种翻译服务,例如 Google 翻译、Microsoft 翻译等。你可以根据需要选择合适的翻译服务。

    import 'package:uni_translate/uni_translate.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
    
      // 初始化翻译器
      await UniTranslate.init(
        translator: GoogleTranslator(),  // 使用 Google 翻译
        apiKey: 'YOUR_API_KEY',          // 替换为你的 API Key
      );
    
      runApp(MyApp());
    }
    
  2. 翻译文本

    你可以使用 UniTranslate.translate 方法来翻译文本。

    void translateText() async {
      String text = "Hello, world!";
      String translatedText = await UniTranslate.translate(text, to: 'es');  // 翻译成西班牙语
      print(translatedText);  // 输出: "¡Hola, mundo!"
    }
    
  3. 多语言支持

    uni_translate 还支持多语言切换。你可以通过 UniTranslate.setLocale 方法来设置当前的语言。

    void setLocale() async {
      await UniTranslate.setLocale('es');  // 设置当前语言为西班牙语
    }
    
  4. 在应用中使用

    你可以在应用中使用 UniTranslate 来动态翻译文本。例如,在 Text 组件中使用:

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('UniTranslate Example'),
            ),
            body: Center(
              child: FutureBuilder<String>(
                future: UniTranslate.translate("Hello, world!", to: 'es'),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.waiting) {
                    return CircularProgressIndicator();
                  } else if (snapshot.hasError) {
                    return Text('Error: ${snapshot.error}');
                  } else {
                    return Text(snapshot.data!);
                  }
                },
              ),
            ),
          ),
        );
      }
    }
回到顶部