AS7RDZT74V3SSWFSJYEGHT64QCEOFEZ46GUPF4ZAKEHTHBBNG7KQC
RUCC2HKZZTUHN3G6IWS4NK3VYGXAI6PORJH2YZKPRAYSDWH63ESQC
USKESL6XR6C7676X3PO3SFFL5EMKMA7EQMPZAA72A7F7UZSONOIQC
HHJDRLLNN36UNIA7STAXEEVBCEMPJNB7SJQOS3TJLLYN4AEZ4MHQC
C6W7N6N57UCNHEV55HEZ3G7WN2ZOBGMFBB5M5ZPDB2HNNHHTOPBQC
WWDZWJTRJWSLVFMQFHS7JMDPK5VNDIQ6IHSMES7BVKYHZY6WRYKAC
AE3AZFVKJBURLY6T6H5477BSP5LISUQYPSPDRSPXRO435KGYTRZAC
7M4UI3TWQIAA333GQ577HDWDWZPSZKWCYG556L6SBRLB6SZDQYPAC
UKFEFT6LSI4K7X6UHQFZYD52DILKXMZMYSO2UYS2FCHNPXIF4BEQC
use std::path::{Path, PathBuf};
use crate::Localize;
use camino::{Utf8Path, Utf8PathBuf};
use icu_locale::Locale;
macro_rules! impl_std_path {
($path_type:ty) => {
impl Localize for $path_type {
fn localize_for(&self, _locale: &Locale) -> String {
self.to_string_lossy().to_string()
}
}
};
}
macro_rules! impl_camino_path {
($path_type:ty) => {
impl Localize for $path_type {
fn localize_for(&self, _locale: &Locale) -> String {
self.to_string()
}
}
};
}
impl_std_path!(PathBuf);
impl_std_path!(Path);
impl_camino_path!(Utf8PathBuf);
impl_camino_path!(Utf8Path);
//! Example showing how to localize paths
use camino::Utf8PathBuf;
use icu_locale::{Locale, locale};
use l10n_embed::Localize;
const DEFAULT_LOCALE: Locale = locale!("en-US");
fn main() -> Result<(), std::io::Error> {
// Create some paths
let current_directory = std::env::current_dir()?;
let current_directory_utf8 = Utf8PathBuf::from_path_buf(current_directory.clone()).unwrap();
// Localize these paths, which just prints the path as a string (lossily if using std::path)
println!(
"Current directory: {}",
current_directory.localize_for(&DEFAULT_LOCALE)
);
println!(
"Current directory (UTF-8): {}",
current_directory_utf8.localize_for(&DEFAULT_LOCALE)
);
Ok(())
}