Crate libretranslate

Source
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"

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.

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
  • Polish

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.