27个版本

0.5.2 2023年8月28日
0.5.1 2021年6月24日
0.5.0 2021年5月26日
0.2.7 2021年3月25日

#30 in 国际化(i18n)


用于 libretrans

MIT 许可证

25KB
374

libretranslate-rs

Crates.io Crates.io API Gitpod ready-to-code GitHub Workflow Status

Rust的LibreTranslate API客户端。

libretranslate = "0.5.1"

libretranslate 允许您通过易于使用的API连接到官方 网页,在项目中使用开源机器翻译。

2021年10月更新

截至目前,libretranslate.com 尚未实现速率限制,因此您必须使用其他实例或API密钥。

以下是一些可以工作的实例

您需要使用 Builder 结构体或 String 方法并指定 URL 以切换到不需要API密钥的实例。

基本示例

libretranslate 是一个异步库,因此您必须使用异步运行时,如 tokioasync-std

所有翻译都通过 translate 函数完成

use libretranslate::{translate, Language};

#[tokio::main]
async fn main() {
    let source = Language::French;
    let target = Language::English;
    let input = "Le texte français.";

    let data = translate(source, target, input, None).await.unwrap();

    println!("Input {}: {}", data.source.as_pretty(), data.input);
    println!("Output {}: {}", data.target.as_pretty(), data.output);
}

输出

Input French: le texte français.
Output English: the French text.

见示例文件夹

语言检测

这里有一个简单的示例。

use libretranslate::{translate, Language};

#[tokio::main]
async fn main() {
    let target = Language::English;
    let text = "le texte français.";

    let data = translate(Language::Detect, target, text, None).await.unwrap();

    println!("Input {}: {}", data.source.as_pretty(), data.input);
    println!("Output {}: {}", data.target.as_pretty(), data.output);
}

输出

Input French: le texte français.
Output English: the French text.

见示例文件夹

语言功能

Language 枚举有很多功能,您可以从各种不同的用户输入创建一个 Language

您可以使用 as_pretty() 返回带有语言名称的英文字符串,或使用 as_code() 返回语言的代码。

语言 还实现了 FromStr,因此您可以使用像 "en" 或 "English"(大小写不敏感)这样的文本来创建一个 语言。您可以通过使用 语言::from().parse::<语言>() 来实现这一点。

这里有一个简单的示例。

use libretranslate::Language;

fn main() {
    let lang = Language::English;
    let lang_parse = "english".parse::<Language>().unwrap();

    assert_eq!(lang, lang_parse);
    assert_eq!("en", lang.as_code());
    assert_eq!("English", lang.as_pretty());
}

见示例文件夹

字符串方法

特质 Translate 实现了 AsRef<str>,这意味着任何 &strString 都可以被翻译成任何其他语言。

这里有一个简单的示例。

use libretranslate::{Language, Translate};

#[tokio::main]
async fn main() {
    let text = "This is text, written on a computer, in English."
        .to_lang(Language::German)
        .from_lang(Language::English)
        .translate()
        .await
        .unwrap();

    println!("output: \"{}\"", text);
}

输出

Output: "Dies ist Text, geschrieben auf einem Computer, in Englisch."

见示例文件夹

可用语言

  • 英语
  • 阿拉伯语
  • 中文
  • 法语
  • 德语
  • 意大利语
  • 日语
  • 葡萄牙语
  • 俄语
  • 西班牙语
  • 波兰语

依赖项

~6.5–9.5MB
~200K SLoC