Flutter谷歌机器学习翻译插件google_mlkit_translation的使用
Flutter谷歌机器学习翻译插件google_mlkit_translation的使用
Google’s ML Kit On-Device Translation for Flutter
这是一个Flutter插件,用于在设备上使用Google的ML Kit进行文本翻译。该插件支持超过50种语言之间的动态翻译。
重要说明
- 平台支持:Google的ML Kit仅支持移动平台(iOS和Android应用)。Web或其他平台不受支持。
- 维护者:此插件不是由Google赞助或维护的。作者是热衷于机器学习的开发者,他们希望将Google的原生API暴露给Flutter。
- 平台通道:此插件使用Flutter平台通道来传递消息。所有机器学习处理都在原生平台上完成,而不是在Flutter/Dart中。
要求
iOS
- 最低iOS部署目标:15.5.0
- Xcode 15.3.0 或更新版本
- Swift 5
- ML Kit不支持32位架构(i386和armv7),只支持64位架构(x86_64和arm64)
在Xcode中排除armv7架构:
platform :ios, '15.5.0'
$iOSVersion = '15.5.0'
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7"
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
end
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
if Gem::Version.new($iOSVersion) > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
end
end
end
end
Android
- minSdkVersion: 21
- targetSdkVersion: 33
- compileSdkVersion: 34
使用指南
On-Device Translation
创建OnDeviceTranslator
实例
import 'package:google_mlkit_translation/google_mlkit_translation.dart';
final TranslateLanguage sourceLanguage = TranslateLanguage.chinese;
final TranslateLanguage targetLanguage = TranslateLanguage.english;
final onDeviceTranslator = OnDeviceTranslator(
sourceLanguage: sourceLanguage,
targetLanguage: targetLanguage,
);
处理文本
String textToTranslate = "你好,世界!";
String translatedText = await onDeviceTranslator.translateText(textToTranslate);
print(translatedText); // 输出: Hello, world!
释放资源
await onDeviceTranslator.close();
管理远程模型
创建ModelManager
实例
final modelManager = OnDeviceTranslatorModelManager();
检查模型是否已下载
bool isDownloaded = await modelManager.isModelDownloaded(TranslateLanguage.english.bcpCode);
print(isDownloaded); // 输出: true/false
下载模型
bool downloadSuccess = await modelManager.downloadModel(TranslateLanguage.english.bcpCode);
print(downloadSuccess); // 输出: true/false
删除模型
bool deleteSuccess = await modelManager.deleteModel(TranslateLanguage.english.bcpCode);
print(deleteSuccess); // 输出: true/false
示例应用
你可以在这里找到完整的示例应用:Example App
完整示例代码
以下是一个完整的示例代码,展示了如何使用google_mlkit_translation
插件进行文本翻译:
import 'package:flutter/material.dart';
import 'package:google_mlkit_translation/google_mlkit_translation.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TranslationScreen(),
);
}
}
class TranslationScreen extends StatefulWidget {
@override
_TranslationScreenState createState() => _TranslationScreenState();
}
class _TranslationScreenState extends State<TranslationScreen> {
final TextEditingController _textEditingController = TextEditingController();
String _translatedText = '';
final TranslateLanguage sourceLanguage = TranslateLanguage.chinese;
final TranslateLanguage targetLanguage = TranslateLanguage.english;
late OnDeviceTranslator _onDeviceTranslator;
@override
void initState() {
super.initState();
_initializeTranslator();
}
Future<void> _initializeTranslator() async {
_onDeviceTranslator = OnDeviceTranslator(
sourceLanguage: sourceLanguage,
targetLanguage: targetLanguage,
);
// 检查并下载模型
final modelManager = OnDeviceTranslatorModelManager();
bool isDownloaded = await modelManager.isModelDownloaded(sourceLanguage.bcpCode);
if (!isDownloaded) {
await modelManager.downloadModel(sourceLanguage.bcpCode);
}
isDownloaded = await modelManager.isModelDownloaded(targetLanguage.bcpCode);
if (!isDownloaded) {
await modelManager.downloadModel(targetLanguage.bcpCode);
}
}
Future<void> _translateText() async {
String textToTranslate = _textEditingController.text.trim();
if (textToTranslate.isNotEmpty) {
try {
String translatedText = await _onDeviceTranslator.translateText(textToTranslate);
setState(() {
_translatedText = translatedText;
});
} catch (e) {
print('Error translating text: $e');
}
}
}
@override
void dispose() {
_onDeviceTranslator.close();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google ML Kit Translation Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: _textEditingController,
decoration: InputDecoration(labelText: 'Enter text to translate'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _translateText,
child: Text('Translate'),
),
SizedBox(height: 20),
Text(
'Translated Text:',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
SizedBox(height: 10),
Text(
_translatedText,
style: TextStyle(fontSize: 16),
),
],
),
),
);
}
}
这个示例展示了如何创建一个简单的Flutter应用程序,用户可以在其中输入文本并点击按钮进行翻译。翻译结果会显示在界面上。希望这个示例能帮助你更好地理解和使用google_mlkit_translation
插件。
更多关于Flutter谷歌机器学习翻译插件google_mlkit_translation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter谷歌机器学习翻译插件google_mlkit_translation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用google_mlkit_translation
插件来实现谷歌机器学习翻译功能的代码案例。这个插件允许你使用谷歌的ML Kit进行文本翻译。
首先,你需要在你的Flutter项目中添加google_mlkit_translation
依赖。打开你的pubspec.yaml
文件,并添加以下依赖:
dependencies:
flutter:
sdk: flutter
google_mlkit_translation: ^0.x.x # 请使用最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你需要在你的Android项目中添加一些配置以启用ML Kit翻译功能。打开android/app/src/main/AndroidManifest.xml
文件,并添加以下权限(如果尚未添加):
<uses-permission android:name="android.permission.INTERNET"/>
然后,在你的Flutter代码中,你可以按照以下步骤使用google_mlkit_translation
插件:
import 'package:flutter/material.dart';
import 'package:google_mlkit_translation/google_mlkit_translation.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TranslationScreen(),
);
}
}
class TranslationScreen extends StatefulWidget {
@override
_TranslationScreenState createState() => _TranslationScreenState();
}
class _TranslationScreenState extends State<TranslationScreen> {
final TextEditingController _textController = TextEditingController();
String _translatedText = '';
void _translateText() async {
String sourceText = _textController.text;
if (sourceText.isEmpty) {
return;
}
// 配置翻译选项
final TranslationOptions options = TranslationOptions(
sourceLanguage: TranslationLanguage.english, // 源语言
targetLanguage: TranslationLanguage.spanish, // 目标语言
);
try {
// 执行翻译
final TranslationResult result = await TranslationTranslator.translate(sourceText, options);
setState(() {
_translatedText = result.translatedText;
});
} catch (e) {
print("Translation failed: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google ML Kit Translation Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextField(
controller: _textController,
decoration: InputDecoration(labelText: 'Enter text to translate'),
maxLines: 4,
),
SizedBox(height: 16),
ElevatedButton(
onPressed: _translateText,
child: Text('Translate'),
),
SizedBox(height: 16),
Text(
'Translated Text:',
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(_translatedText),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,它包含一个文本输入框用于输入要翻译的文本,一个按钮用于触发翻译,以及一个文本显示区域用于显示翻译后的文本。
TextEditingController
用于管理文本输入。TranslationOptions
用于指定源语言和目标语言。TranslationTranslator.translate
方法用于执行翻译操作。
请确保你使用的是最新版本的google_mlkit_translation
插件,因为API和插件的功能可能会随时间变化。你可以通过查看插件的官方文档来获取最新的信息和示例。