translation-rs 0.4.1

Safe Rust bindings for Translation.framework — language availability, session workflows, and language recognition on macOS
Documentation
#![allow(missing_docs, non_camel_case_types)]

use core::ffi::{c_char, c_void};

extern "C" {
    pub fn trl_string_free(s: *mut c_char);

    pub fn trl_language_canonicalize(
        identifier: *const c_char,
        out_language: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_pair_canonicalize_json(
        source_language: *const c_char,
        target_language: *const c_char,
        out_pair_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;

    pub fn trl_language_availability_new() -> *mut c_void;
    pub fn trl_language_availability_new_with_preferred_strategy(
        preferred_strategy: i32,
        out_token: *mut *mut c_void,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_availability_release(token: *mut c_void);
    pub fn trl_language_availability_preferred_strategy(
        token: *mut c_void,
        out_strategy: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_availability_supported_languages_json(
        token: *mut c_void,
        out_languages_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_availability_status_from_to(
        token: *mut c_void,
        source_language: *const c_char,
        target_language: *const c_char,
        out_status: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_availability_status_for_text(
        token: *mut c_void,
        text: *const c_char,
        target_language: *const c_char,
        out_status: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_language_availability_status_async(
        token: *mut c_void,
        source_language: *const c_char,
        target_language: *const c_char,
        ctx: *mut c_void,
        cb: extern "C" fn(*const c_void, *const c_char, *mut c_void),
    );
    pub fn trl_language_availability_supported_languages_async(
        token: *mut c_void,
        cb: extern "C" fn(*const c_void, *const c_char, *mut c_void),
        ctx: *mut c_void,
    );

    pub fn trl_detect_language(
        text: *const c_char,
        out_language: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;

    pub fn trl_session_new(
        configuration_json: *const c_char,
        out_token: *mut *mut c_void,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_release(token: *mut c_void);
    pub fn trl_session_can_request_downloads(
        token: *mut c_void,
        out_value: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_is_ready(
        token: *mut c_void,
        out_value: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_preferred_strategy(
        token: *mut c_void,
        out_strategy: *mut i32,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_cancel(token: *mut c_void, out_error_message: *mut *mut c_char) -> i32;
    pub fn trl_session_prepare_translation(
        token: *mut c_void,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_translate_async(
        token: *mut c_void,
        text: *const c_char,
        cb: extern "C" fn(*const c_void, *const c_char, *mut c_void),
        ctx: *mut c_void,
    );
    pub fn trl_session_translations_async(
        token: *mut c_void,
        requests_json: *const c_char,
        cb: extern "C" fn(*const c_void, *const c_char, *mut c_void),
        ctx: *mut c_void,
    );
    pub fn trl_session_prepare_translation_async(
        token: *mut c_void,
        cb: extern "C" fn(*const c_void, *const c_char, *mut c_void),
        ctx: *mut c_void,
    );
    pub fn trl_session_translate_text_json(
        token: *mut c_void,
        text: *const c_char,
        out_response_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_translate_attributed_json(
        token: *mut c_void,
        attributed_text_json: *const c_char,
        out_response_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_translate_batch_json(
        token: *mut c_void,
        requests_json: *const c_char,
        out_responses_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_session_translate_batch_stream_json(
        token: *mut c_void,
        requests_json: *const c_char,
        out_batch_token: *mut *mut c_void,
        out_error_message: *mut *mut c_char,
    ) -> i32;
    pub fn trl_batch_response_release(token: *mut c_void);
    pub fn trl_batch_response_next_json(
        token: *mut c_void,
        out_response_json: *mut *mut c_char,
        out_error_message: *mut *mut c_char,
    ) -> i32;
}

pub mod status {
    pub const OK: i32 = 0;
    pub const INVALID_ARGUMENT: i32 = -1;
    pub const UNAVAILABLE_ON_THIS_MACOS: i32 = -2;
    pub const TIMED_OUT: i32 = -3;
    pub const UNSUPPORTED_SOURCE_LANGUAGE: i32 = -10;
    pub const UNSUPPORTED_TARGET_LANGUAGE: i32 = -11;
    pub const UNSUPPORTED_LANGUAGE_PAIRING: i32 = -12;
    pub const UNABLE_TO_IDENTIFY_LANGUAGE: i32 = -13;
    pub const NOTHING_TO_TRANSLATE: i32 = -14;
    pub const ALREADY_CANCELLED: i32 = -15;
    pub const NOT_INSTALLED: i32 = -16;
    pub const FRAMEWORK_ERROR: i32 = -20;
    pub const UNKNOWN: i32 = -99;
}