Crate libretranslate[][src]

Expand description

libretranslate-rs

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

A LibreTranslate API client for Rust.

libretranslate = "0.5.1"

libretranslate allows you to use open source machine translation in your projects through an easy to use API that connects to the official webpage.

Basic Example

libretranslate is an async library, so you’ll have to use an async runtime like tokio or async-std.

All translations are done through the translate function:

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);
}

Output:

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

See In Examples Folder

Language Detection

Here’s a simple example.

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);
}

Output:

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

See In Examples Folder

Language Functionality

The Language enum has a lot of functionality so you can create a Language from all sorts of different user inputs.

You can return a &str with the language’s name in English using as_pretty(), or the language’s code using as_code().

Language also implements FromStr so you can create a Language using text like “en”, or “English” (case doesn’t matter). You can do this by either using Language::from() or .parse::<Language>().

Here’s a simple example.

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());
}

See In Examples Folder

String Methods

The trait Translate implements AsRef<str>, meaning that any &str or String can be translated into any other language.

Here’s a simple example.

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:

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

See In Examples Folder

Available Languages

  • English
  • Arabic
  • Chinese
  • French
  • German
  • Italian
  • Japanese
  • Portuguese
  • Russian
  • Spanish

! Written with love, in Rust by Grant Handy.

Structs

Query

A struct created by a Translate that can be translated using the translate method.

Translation

Data that is output by the translate function.

TranslationBuilder

Build Translations more verbosely.

Enums

Language

Languages that can used for input and output of the translate function.

LanguageError

Errors that could be outputed by a Language.

TranslateError

Errors that could be outputed by translate.

Traits

Translate

Translate text from a String or str (anything that implements AsRef<str>).

Functions

translate

Translate text between two Language.

translate_url

Translate using a custom URL.