Flutter语言翻译插件dart_naver_papago的使用

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

Flutter语言翻译插件dart_naver_papago的使用

dart_naver_papago 是一个用于使用Naver Papago翻译、语言检测和罗马化API的非官方包。

功能

  • Naver Papago API
    • 翻译
    • 语言检测
    • 罗马化

要求

要使用此包,你需要满足以下条件:

  • Dart 2.19.0 或更高版本

示例

首先,生成你的Naver客户端ID和客户端密钥。 请访问 Naver开发者中心 并注册以获取这些信息。

初始化 NaverWithoutLoginApi 并传入你的API密钥。

// 初始化NaverWithoutLoginApi
NaverWithoutLoginApi.init(clientId: "你的客户端ID", clientSecret: "你的客户端密钥");

使用 APIname.queryFunction 的形式来调用查询函数。你可以查看 可用API文档 了解更多详情。

示例代码

import 'package:dart_naver_papago/dart_naver_papago.dart';

void main() async {
  // 初始化NaverWithoutLoginApi
  NaverWithoutLoginApi.init(clientId: "你的客户端ID", clientSecret: "你的客户端密钥");

  // 翻译韩语到英语
  final result = await PapagoTranslation.getTranslation(LangCode.ko, LangCode.en, "안녕하세요");
  print(result.getText); // 输出 "Hello"

  // 检测语言
  final langResult = await LanguageDetection.detectLanguage("안녕하세요");
  print(langResult.langCode); // 输出 "LangCode.ko"

  // 罗马化名称
  final romanizationResult = await Romanization.romanization("강형욱");
}

pub.dev

逐步添加更多文档评论 😊

完整示例Demo

以下是一个完整的示例代码,展示如何使用 dart_naver_papago 进行翻译、语言检测和罗马化:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Papago API Example')),
        body: Center(
          child: TranslationWidget(),
        ),
      ),
    );
  }
}

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

class _TranslationWidgetState extends State<TranslationWidget> {
  String _translatedText = '';
  String _detectedLanguage = '';
  String _romanizedText = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    _initializePapago();
  }

  Future<void> _initializePapago() async {
    // 初始化NaverWithoutLoginApi
    NaverWithoutLoginApi.init(clientId: "你的客户端ID", clientSecret: "你的客户端密钥");
  }

  Future<void> _translateText() async {
    final result = await PapagoTranslation.getTranslation(LangCode.ko, LangCode.en, "안녕하세요");
    setState(() {
      _translatedText = result.getText;
    });
  }

  Future<void> _detectLanguage() async {
    final result = await LanguageDetection.detectLanguage("안녕하세요");
    setState(() {
      _detectedLanguage = result.langCode.toString();
    });
  }

  Future<void> _romanizeText() async {
    final result = await Romanization.romanization("강형욱");
    setState(() {
      _romanizedText = result.text;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: _translateText,
          child: Text('Translate'),
        ),
        Text(_translatedText),
        ElevatedButton(
          onPressed: _detectLanguage,
          child: Text('Detect Language'),
        ),
        Text(_detectedLanguage),
        ElevatedButton(
          onPressed: _romanizeText,
          child: Text('Romanize'),
        ),
        Text(_romanizedText),
      ],
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用dart_naver_papago插件进行语言翻译的示例代码。这个插件允许你使用Naver Papago API进行文本翻译。

首先,确保你已经在pubspec.yaml文件中添加了dart_naver_papago依赖:

dependencies:
  flutter:
    sdk: flutter
  dart_naver_papago: ^最新版本号  # 请替换为实际可用的最新版本号

然后,运行flutter pub get来获取依赖。

接下来,你需要获取Naver Papago API的客户端ID和客户端密钥。你可以在Naver Developers网站上注册并创建一个新的应用程序来获取这些凭据。

以下是一个完整的Flutter应用程序示例,展示如何使用dart_naver_papago插件进行翻译:

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

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

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

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

class _TranslationScreenState extends State<TranslationScreen> {
  final TextEditingController _sourceTextController = TextEditingController();
  final TextEditingController _translatedTextController = TextEditingController();
  String _sourceLanguageCode = 'en'; // 源语言代码,例如 'en' 表示英语
  String _targetLanguageCode = 'ko'; // 目标语言代码,例如 'ko' 表示韩语
  String _apiKey = '你的Naver Papago API客户端密钥'; // 替换为你的API密钥
  String _clientId = '你的Naver Papago API客户端ID'; // 替换为你的客户端ID

  void _translateText() async {
    try {
      final PapagoClient papagoClient = PapagoClient(_clientId, _apiKey);
      final TranslationResult result = await papagoClient.translate(
        source: _sourceTextController.text,
        sourceLang: _sourceLanguageCode,
        targetLang: _targetLanguageCode,
      );
      setState(() {
        _translatedTextController.text = result.translatedText;
      });
    } catch (e) {
      print('Error during translation: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Naver Papago Translation'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            TextField(
              controller: _sourceTextController,
              decoration: InputDecoration(
                labelText: 'Source Text',
              ),
              maxLines: 4,
            ),
            SizedBox(height: 16),
            Row(
              children: <Widget>[
                Expanded(
                  child: DropdownButton<String>(
                    value: _sourceLanguageCode,
                    hint: Text('Source Language'),
                    onChanged: (newValue) {
                      setState(() {
                        _sourceLanguageCode = newValue;
                      });
                    },
                    items: <String>[
                      'en', // 英语
                      'es', // 西班牙语
                      'fr', // 法语
                      'ko', // 韩语
                      // 添加更多语言代码...
                    ].map<DropdownMenuItem<String>>((String value) {
                      return DropdownMenuItem<String>(
                        value: value,
                        child: Text(value.toUpperCase()),
                      );
                    }).toList(),
                  ),
                ),
                SizedBox(width: 16),
                Expanded(
                  child: DropdownButton<String>(
                    value: _targetLanguageCode,
                    hint: Text('Target Language'),
                    onChanged: (newValue) {
                      setState(() {
                        _targetLanguageCode = newValue;
                      });
                    },
                    items: <String>[
                      'en', // 英语
                      'es', // 西班牙语
                      'fr', // 法语
                      'ko', // 韩语
                      // 添加更多语言代码...
                    ].map<DropdownMenuItem<String>>((String value) {
                      return DropdownMenuItem<String>(
                        value: value,
                        child: Text(value.toUpperCase()),
                      );
                    }).toList(),
                  ),
                ),
              ],
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _translateText,
              child: Text('Translate'),
            ),
            SizedBox(height: 16),
            TextField(
              controller: _translatedTextController,
              decoration: InputDecoration(
                labelText: 'Translated Text',
                readOnly: true,
              ),
              maxLines: 4,
            ),
          ],
        ),
      ),
    );
  }
}

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

请确保你已经替换了_apiKey_clientId变量的值为你的Naver Papago API的实际凭据。

这个示例展示了如何使用dart_naver_papago插件的基本功能。你可以根据需要进一步扩展和自定义这个应用程序。

回到顶部