Flutter谷歌翻译插件google_translation的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter谷歌翻译插件google_translation的使用

Google Translation 插件方便地使用 Google API 密钥进行翻译。

Pub包

Github仓库

首次公告

目前,Google Translation 插件仅支持 Google 翻译 API 的基本功能。高级功能将在后期添加。

了解更多关于 Google 翻译 及其基本与高级功能的区别 在这里

开始使用

设置API密钥

在使用 Google 翻译 API 时,你需要设置一个 Google 翻译 API 密钥

安装

google_translation 添加到你的 pubspec.yaml 文件依赖项中。

dependencies:
  google_translation: ^版本号

使用

配置

首次设置 Google 翻译 API。

import 'package:google_translation/google_translation.dart';

void main() async {
  final googleTranslation = GoogleTranslation();
  googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");
}

Google 翻译 API 可以在调用函数时更新或覆盖。

简单翻译

用于文本翻译:

import 'package:google_translation/google_translation.dart';

void main() async {
  final googleTranslation = GoogleTranslation();
  googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");

  final result = await googleTranslation.simpleTextTranslate(
      inputText: "TEXT_NEED_TRANSLATE",
      sourceLanguage: "en", // 可选参数
      targetLanguage: "vi",
      googleAPIKey: "YOUR_GOOGLE_API_KEY", // 可选参数。如果已经在上面设置,则不需要
  );

  print("Result: $result"); // 输出值
}
语言检测

用于语言检测,获取可识别的语言列表:

import 'package:google_translation/google_translation.dart';

void main() async {
  final googleTranslation = GoogleTranslation();
  googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");

  final listDetectLanguages = await googleTranslation.simpleTextDetectLanguages(
      inputText: "TEXT_NEED_TO_DETECT_LANGUAGE",
      googleAPIKey: "YOUR_GOOGLE_API_KEY", // 可选参数。如果已经在上面设置,则不需要
  );

  print("List detect languages: $listDetectLanguages"); // 输出值
}
获取支持的语言

有两种方法可以获取支持的语言:

  1. 获取默认支持的语言:
import 'package:google_translation/google_translation.dart';

void main() async {
  final googleTranslation = GoogleTranslation();
  googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");

  final supportLanguages = await googleTranslation.getListSupportLanguages(
     googleAPIKey: "YOUR_GOOGLE_API_KEY", // 可选参数。如果已经在上面设置,则不需要
  );

  print("List support languages: $supportLanguages"); // 输出值
}
  1. 获取特定目标本地化支持的语言:
import 'package:google_translation/google_translation.dart';

void main() async {
  final googleTranslation = GoogleTranslation();
  googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");

  final supportLanguages = await googleTranslation.getListSupportLanguages(
      targetLanguage: "en", // 定义此参数
      googleAPIKey: "YOUR_GOOGLE_API_KEY", // 可选参数。如果已经在上面设置,则不需要
  );

  print("List support languages: $supportLanguages"); // 输出值
}

更多关于发现支持的语言的信息,请参阅 这里

示例代码

以下是一个完整的示例代码,展示如何使用 google_translation 插件进行翻译和语言检测。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

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

class _HomeScreenState extends State<HomeScreen> {
  final googleTranslation = GoogleTranslation();
  String result = '';
  String detectLanguage = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    googleTranslation.setupAPIKey("YOUR_GOOGLE_API_KEY");
    performTranslationAndDetection();
  }

  Future<void> performTranslationAndDetection() async {
    // 简单翻译
    final translatedText = await googleTranslation.simpleTextTranslate(
        inputText: "Hello, how are you?",
        sourceLanguage: "en",
        targetLanguage: "vi",
        googleAPIKey: "YOUR_GOOGLE_API_KEY"
    );
    setState(() {
      result = translatedText;
    });

    // 语言检测
    final detectedLanguages = await googleTranslation.simpleTextDetectLanguages(
        inputText: "Bonjour, comment ça va?",
        googleAPIKey: "YOUR_GOOGLE_API_KEY"
    );
    setState(() {
      detectLanguage = detectedLanguages.toString();
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Google Translation Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Translated Text: $result'),
            SizedBox(height: 20),
            Text('Detected Languages: $detectLanguage'),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用google_translation插件的示例代码。这个插件允许你进行文本翻译。首先,你需要在你的pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  google_translation: ^0.4.0  # 请检查最新版本号

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

接下来,你可以在你的Flutter应用中使用这个插件。以下是一个简单的示例,展示如何进行文本翻译:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google Translation Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TranslationScreen(),
    );
  }
}

class TranslationScreen extends StatefulWidget {
  @override
  _TranslationScreenState createState() => _TranslationScreenState();
}

class _TranslationScreenState extends State<TranslationScreen> {
  final TextEditingController _textController = TextEditingController();
  final TextEditingController _translatedTextController = TextEditingController();
  String _sourceLanguageCode = 'en';
  String _targetLanguageCode = 'es';
  String _translatedText = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Translation Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            TextField(
              controller: _textController,
              decoration: InputDecoration(labelText: 'Text to Translate'),
            ),
            SizedBox(height: 16),
            DropdownButtonFormField<String>(
              value: _sourceLanguageCode,
              hint: Text('Source Language'),
              onChanged: (newValue) {
                setState(() {
                  _sourceLanguageCode = newValue;
                });
              },
              items: [
                'en', 'es', 'fr', 'de', 'zh'
              ].map<DropdownMenuItem<String>>((String value) {
                return DropdownMenuItem<String>(
                  value: value,
                  child: Text(value.toUpperCase()),
                );
              }).toList(),
            ),
            SizedBox(height: 16),
            DropdownButtonFormField<String>(
              value: _targetLanguageCode,
              hint: Text('Target Language'),
              onChanged: (newValue) {
                setState(() {
                  _targetLanguageCode = newValue;
                });
              },
              items: [
                'en', 'es', 'fr', 'de', 'zh'
              ].map<DropdownMenuItem<String>>((String value) {
                return DropdownMenuItem<String>(
                  value: value,
                  child: Text(value.toUpperCase()),
                );
              }).toList(),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                try {
                  GoogleTranslation googleTranslation = GoogleTranslation();
                  String translatedText = await googleTranslation.translate(
                    _textController.text,
                    from: _sourceLanguageCode,
                    to: _targetLanguageCode,
                  );
                  setState(() {
                    _translatedTextController.text = translatedText;
                    _translatedText = translatedText;
                  });
                } catch (e) {
                  print('Error during translation: $e');
                }
              },
              child: Text('Translate'),
            ),
            SizedBox(height: 16),
            Text(
              'Translated Text: $_translatedText',
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,用户可以在其中输入要翻译的文本,选择源语言和目标语言,然后点击“Translate”按钮进行翻译。翻译结果会显示在下方的文本字段中。

请确保你的网络连接正常,因为google_translation插件依赖于Google翻译API,而该API需要互联网连接才能工作。

回到顶部