Struct gettextrs::TextDomain [−][src]
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
bind_textdomain_codeset
is called by default to set UTF-8. You can usecodeset
to override this, but please bear in mind that other functions in this crate require UTF-8.- Current user’s locale is selected by default. You can override this behaviour by calling
locale
. LocaleCategory::LcMessages
is used when callingsetlocale
. Uselocale_category
to override.- System data paths are searched by default (see below for details). Use
skip_system_data_paths
to limit the search to user-provided paths.
Text domain path binding
A translation file for the text domain is searched in the following paths (in order):
- Paths added using the
prepend
function. - Paths from the
XDG_DATA_DIRS
environment variable, except if the functionskip_system_data_paths
was invoked. IfXDG_DATA_DIRS
is not defined, current path is used. - 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
Auto Trait Implementations
impl RefUnwindSafe for TextDomain
impl Send for TextDomain
impl Sync for TextDomain
impl Unpin for TextDomain
impl UnwindSafe for TextDomain
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,