Code Monkey home page Code Monkey logo

libretranslate-rs's Introduction

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.

Update for Oct, 2021

As of now, libretranslate.com hasn't implemented rate limiting yet, so you must use an alternate instance or have an API key.

Here are some that work:

You'll need to use a Builder struct or a String method and specify the url to change to an instance that doesn't require an API key.

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

libretranslate-rs's People

Contributors

grantshandy avatar rafagd avatar szybet avatar argosopentech avatar sigaloid avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.