Flutter微软Azure翻译服务插件azure_translation的使用
Flutter微软Azure翻译服务插件azure_translation的使用
插件简介
azure_translation
是一个用于与微软Azure翻译API交互的包装器。它目前支持以下功能:
- 列出语言
- 翻译
- 语言检测
- 分句
即将添加的功能包括:
- 转写(Transliteration)
列出语言
列出语言非常简单:
import 'package:azure_translation/azure_translation.dart' as at;
final langs = (await at.languages()).unwrap();
print(langs.translation?.take(4).join('\n'));
// Language(af, Afrikaans, Afrikaans, ltr)
// Language(am, Amharic, አማርኛ, ltr)
// Language(ar, Arabic, العربية, rtl)
// Language(as, Assamese, অসমীয়া, ltr)
在列表的语言中包含 translation
、transliteration
和 dictionary
语言。 可以通过传递可选的 scopes
参数来请求这些中的一个或两个:
listLanguages(scopes: [LanguageScope.translation]);
还有一个可选的 baseLanguage
参数,用于设置 Accept-Language
头部。
final langs = (await at.languages(baseLanguage: 'fr')).unwrap();
print(langs.translationLanguage('en'));
// Language(en, Anglais, English, ltr)
翻译
翻译功能如下:
import 'package:azure_translation/azure_translation.dart' as at;
final res = await at.translate(
['hello world', 'good morning'],
baseLanguage: 'en', // 可选
languages: ['fr', 'vi', 'ar'],
key: 'YOUR_AZURE_KEY',
region: 'YOUR_AZURE_REGION',
);
print(res.object!.join('\n'));
// TranslationResult(hello world, [fr: Salut tout le monde, vi: Chào thế giới, ar: مرحبا بالعالم])
// TranslationResult(good morning, [fr: Bonjour, vi: Xin chào, ar: صباح الخير])
转写(Transliteration)
转写功能如下:
final res = await transliterate(
['konnichiwa', 'arigato', 'sayounara'],
key: key,
region: region,
language: 'ja',
fromScript: 'Latn',
toScript: 'Jpan',
);
print(res.object!);
// TransliterationResult(ja, Latn -> Jpan, {konnichiwa: こんにちわ, arigato: ありがと, sayounara: さようなら})
语言检测
语言检测功能如下:
final res = await detect(
['bonjour', 'hola', 'здравейте'],
key: key,
region: region,
);
print(res.object!.join('\n'));
// DetectionResult(bonjour, fr, 1.0, true, false)
// DetectionResult(hola, es, 1.0, true, false)
// DetectionResult(здравейте, bg, 1.0, true, true)
print(res.object!.first.scores);
// {fr: 1.0}
分句
分句功能如下:
final res = await breakSentence(
[
'How are you? I am fine. What did you do today?',
'¿hola, cómo estás? ¿Donde está la biblioteca?',
],
key: key,
region: region,
);
print(res.object!.join('\n'));
// BrokenSentence([How are you? , I am fine. ,What did you do today?])
// BrokenSentence([¿hola, cómo estás? ,¿Donde está la biblioteca?])
错误处理
错误处理在该包中都是通过结果类模式完成的。 如果HTTP出现问题(例如没有连接),则会抛出异常。 具体来说,它使用了来自 elegent 包的结果类.
final langs = await languages();
final Result<LanguageList, AzureTranslationError> res = await languages();
if (res.ok) {
final LanguageList languageList = res.object!;
print('Success! Language list: $languageList');
} else {
final AzureTranslationError error = res.error!;
print('Error! $error');
}
示例代码
要运行这些示例,需要在执行目录下创建一个 .env
文件。
.env
应该包含以下变量:
AZURE_KEY=YOUR_AZURE_KEY
AZURE_REGION=YOUR_AZURE_REGION
翻译示例
import 'package:azure_translation/azure_translation.dart' as at;
void main() async {
final res = await at.translate(
['hello world', 'banana', 'bonjour'],
baseLanguage: 'en', // 可选
languages: ['fr', 'zh-Hans', 'ru'],
key: 'YOUR_AZURE_KEY',
region: 'YOUR_AZURE_REGION',
);
print(res.object!.join('\n'));
// 输出:
// hello world: [vi: Chào thế giới, zh-Hans: 世界您好, ru: Всем привет]
// banana: [vi: chuối, zh-Hans: 香蕉, ru: банан]
// bonjour: [vi: Xin chào, zh-Hans: 你好, ru: Привет]
}
转写示例
import 'package:azure_translation/azure_translation.dart' as at;
void main() async {
final res = await at.transliterate(
['konnichiwa', 'arigato', 'sayounara'],
key: 'YOUR_AZURE_KEY',
region: 'YOUR_AZURE_REGION',
language: 'ja',
fromScript: 'Latn',
toScript: 'Jpan',
);
print(res.object!);
// 输出:
// konnichiwa: こんにちわ
// arigato: ありがと
// sayounara: さようなら
}
语言检测示例
import 'package:azure_translation/azure_translation.dart' as at;
void main() async {
final res = await at.detect(
['bonjour', 'hola', 'здравейте'],
key: 'YOUR_AZURE_KEY',
region: 'YOUR_AZURE_REGION',
);
print(res.object!.join('\n'));
// 输出:
// detectionResult(bonjour, fr, 1.0, true, false)
// detectionResult(hola, es, 1.0, true, false
// detectionResult(здравейте, bg, 1.0, true, true)
print(res.object!.first.scores);
// 输出:
// {fr: 1.0}
}
分句示例
import 'package:azure_translation/azure_translation.dart' as at;
void main() async {
final res = await at.breakSentence(
[
'How are you? I am fine. What did you do today?',
'¿hola, cómo estás? ¿Donde está la biblioteca?',
],
key: 'YOUR_AZURE_KEY',
region: 'YOUR_AZURE_REGION',
);
print(res.object!.join('\n'));
// 输出:
// brokenSentence([ How are you? ,I am fine. ,What did you do today?])
// brokenSentence([¿hola, cómo estás? ,¿Donde está la biblioteca?])
}
更多关于Flutter微软Azure翻译服务插件azure_translation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter微软Azure翻译服务插件azure_translation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用azure_translation
插件与微软Azure翻译服务进行集成的代码示例。这个示例展示了如何设置插件、初始化翻译客户端以及执行翻译操作。
首先,你需要确保你的Flutter项目已经添加了azure_translation
依赖。在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
azure_translation: ^最新版本号 # 请替换为最新的插件版本号
然后运行flutter pub get
来安装依赖。
接下来,你需要配置Azure翻译服务的API密钥和端点。这通常是在Azure门户中创建的翻译服务资源中获取的。
以下是一个完整的示例代码,展示了如何使用azure_translation
插件:
import 'package:flutter/material.dart';
import 'package:azure_translation/azure_translation.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final TranslationClient _translationClient = TranslationClient(
endpoint: '你的翻译服务端点', // 例如: "https://your-service-name.cognitiveservices.azure.com/"
apiKey: '你的API密钥', // 你的Azure翻译服务API密钥
);
String translatedText = '';
String sourceText = 'Hello, how are you?';
String targetLanguage = 'zh-Hans'; // 目标语言代码,例如中文简体
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Azure Translation Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(labelText: 'Source Text'),
initialValue: sourceText,
onChanged: (value) {
setState(() {
sourceText = value;
});
},
),
SizedBox(height: 16),
DropdownButton<String>(
value: targetLanguage,
onChanged: (String newValue) {
setState(() {
targetLanguage = newValue;
});
},
items: <String>[
'en', 'es', 'fr', 'de', 'zh-Hans', // 添加更多语言代码根据需要
].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
try {
TranslationResult result = await _translationClient.translate(
text: sourceText,
to: targetLanguage,
);
setState(() {
translatedText = result.translatedText;
});
} catch (e) {
print('Error: $e');
}
},
child: Text('Translate'),
),
SizedBox(height: 16),
Text('Translated Text: $translatedText'),
],
),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,它包含一个文本字段用于输入源文本,一个下拉菜单用于选择目标语言,以及一个按钮用于触发翻译操作。翻译结果会显示在页面上。
请注意:
- 你需要将
endpoint
和apiKey
替换为你自己的Azure翻译服务资源的值。 - 确保你已经在Azure门户中启用了翻译服务,并获取了相应的API密钥和端点。
azure_translation
插件的API可能会随着版本更新而变化,因此请参考最新的插件文档以确保代码的正确性。
这个示例应该能帮助你开始在Flutter项目中使用Azure翻译服务。