Struct gettextrs::TextDomain[][src]

pub struct TextDomain { /* fields omitted */ }

A builder to configure gettext.

It searches translations in the system data paths and optionally in the user-specified paths, and binds them to the given domain. TextDomain takes care of calling setlocale, bindtextdomain, bind_textdomain_codeset, and textdomain for you.

Defaults

Text domain path binding

A translation file for the text domain is searched in the following paths (in order):

  1. Paths added using the prepend function.
  2. Paths from the XDG_DATA_DIRS environment variable, except if the function skip_system_data_paths was invoked. If XDG_DATA_DIRS is not defined, current path is used.
  3. Paths added using the push function.

For each path in the search paths, the following subdirectories are scanned: path/locale/lang*/LC_MESSAGES (where lang is the language part of the selected locale). The first path containing a file matching domainname.mo is used for the call to bindtextdomain.

Examples

Basic usage:

use gettextrs::TextDomain;

TextDomain::new("my_textdomain").init()?;

Use the translation in current language under the target directory if available, otherwise search system defined paths:

use gettextrs::TextDomain;

TextDomain::new("my_textdomain")
           .prepend("target")
           .init()?;

Scan the target directory only, force locale to fr_FR and handle errors:

use gettextrs::{TextDomain, TextDomainError};

let init_msg = match TextDomain::new("my_textdomain")
    .skip_system_data_paths()
    .push("target")
    .locale("fr_FR")
    .init()
{
    Ok(locale) => {
        format!("translation found, `setlocale` returned {:?}", locale)
    }
    Err(error) => {
        format!("an error occurred: {}", error)
    }
};
println!("Textdomain init result: {}", init_msg);

Implementations

impl TextDomain[src]

pub fn new<S: Into<String>>(domainname: S) -> TextDomain[src]

Creates a new instance of TextDomain for the specified domainname.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain");

pub fn locale(self, locale: &str) -> Self[src]

Override the locale for the TextDomain. Default is to use current locale.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain")
                             .locale("fr_FR.UTF-8");

pub fn locale_category(self, locale_category: LocaleCategory) -> Self[src]

Override the locale_category. Default is LocaleCategory::LcMessages.

Examples

use gettextrs::{LocaleCategory, TextDomain};

let text_domain = TextDomain::new("my_textdomain")
                             .locale_category(LocaleCategory::LcAll);

pub fn codeset<S: Into<String>>(self, codeset: S) -> Self[src]

Define the codeset that will be used for calling bind_textdomain_codeset. The default is “UTF-8”.

Warning: other functions in this crate require UTF-8.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain")
                             .codeset("KOI8-R");

pub fn prepend<P: Into<PathBuf>>(self, path: P) -> Self[src]

Prepend the given path to the search paths.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain")
                             .prepend("~/.local/share");

pub fn push<P: Into<PathBuf>>(self, path: P) -> Self[src]

Push the given path to the end of the search paths.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain")
                             .push("test");

pub fn skip_system_data_paths(self) -> Self[src]

Don’t search for translations in the system data paths.

Examples

use gettextrs::TextDomain;

let text_domain = TextDomain::new("my_textdomain")
                             .push("test")
                             .skip_system_data_paths();

pub fn init(self) -> Result<Option<Vec<u8>>, TextDomainError>[src]

Search for translations in the search paths, initialize the locale, set up the text domain and ask gettext to convert messages to UTF-8.

Returns an Option with the opaque string that describes the locale set (i.e. the result of setlocale) if:

  • a translation of the text domain in the requested language was found; and
  • the locale is valid.

Examples

use gettextrs::TextDomain;

TextDomain::new("my_textdomain").init()?;

Trait Implementations

impl Debug for TextDomain[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.