Skip to content

Commit

Permalink
Attempt to fix failing tests and build
Browse files Browse the repository at this point in the history
  • Loading branch information
kellpossible committed Aug 8, 2024
1 parent 3e23213 commit 2acce66
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 42 deletions.
4 changes: 2 additions & 2 deletions i18n-build/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ mod localize_feature {

#[derive(RustEmbed)]
#[folder = "i18n/mo"]
struct Translations;
pub struct Translations;

lazy_static! {
static ref LANGUAGE_LOADER: GettextLanguageLoader = gettext_language_loader!();
Expand All @@ -85,7 +85,7 @@ mod localize_feature {
/// Obtain a [Localizer](i18n_embed::Localizer) for localizing this library.
///
/// ⚠️ *This API requires the following crate features to be activated: `localize`.*
pub fn localizer() -> DefaultLocalizer<'static> {
pub fn localizer() -> DefaultLocalizer<'static, Translations, GettextLanguageLoader> {
DefaultLocalizer::new(&*LANGUAGE_LOADER, &TRANSLATIONS)
}
}
Expand Down
6 changes: 3 additions & 3 deletions i18n-embed/examples/desktop-bin/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::time::Duration;

use i18n_embed::{
fluent::FluentLanguageLoader, DefaultLocalizer, DesktopLanguageRequester, I18nAssets,
Localizer, RustEmbedNotifyAssets,
fluent::FluentLanguageLoader, DefaultLocalizer, DesktopLanguageRequester, Localizer,
RustEmbedNotifyAssets,
};
use library_fluent::{hello_world, localizer, LocalizationsEmbed, LOCALIZATIONS};
use library_fluent::{hello_world, localizer, LocalizationsEmbed};

fn main() {
env_logger::init();
Expand Down
2 changes: 1 addition & 1 deletion i18n-embed/examples/library-fluent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
i18n-embed = { workspace = true, features = ["fluent-system"] }
i18n-embed = { workspace = true, features = ["fluent-system", "autoreload"] }
i18n-embed-fl = { workspace = true }
once_cell = { workspace = true }
rust-embed = { workspace = true }
2 changes: 1 addition & 1 deletion i18n-embed/examples/library-fluent/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use i18n_embed::{
fluent::{fluent_language_loader, FluentLanguageLoader},
DefaultLocalizer, I18nAssets, LanguageLoader, Localizer, RustEmbedNotifyAssets,
DefaultLocalizer, LanguageLoader, RustEmbedNotifyAssets,
};
use i18n_embed_fl::fl;
use once_cell::sync::Lazy;
Expand Down
3 changes: 2 additions & 1 deletion i18n-embed/examples/library-fluent/tests/with_localizer.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use i18n_embed::{LanguageLoader, Localizer};
use library_fluent::{hello_world, localizer};

use std::collections::HashSet;
Expand All @@ -9,7 +10,7 @@ use std::iter::FromIterator;
fn test_available_languages() {
let localizer = localizer();
assert_eq!(
&localizer.language_loader().fallback_language().to_string(),
&localizer.language_loader.fallback_language().to_string(),
"en"
);

Expand Down
4 changes: 4 additions & 0 deletions i18n-embed/src/assets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,9 @@ fn notify_watcher(
}

/// An entity that watches for changes to localization resources.
///
/// NOTE: Currently we rely in the implicit [`Drop`] implementation to remove file system watches,
/// in the future ther may be new methods added to this trait.
pub trait Watcher {}

#[cfg(feature = "autoreload")]
Expand Down Expand Up @@ -309,6 +312,7 @@ impl AssetsMultiplexor {
}
}

#[allow(dead_code)] // We rely on the Drop implementation of the Watcher to remove the file system watch.
struct Watchers(Vec<Box<dyn Watcher>>);

impl Watcher for Watchers {}
Expand Down
2 changes: 1 addition & 1 deletion i18n-embed/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ where

impl<'a, ASSETS, LOADER> DefaultLocalizer<'a, ASSETS, LOADER> {
/// Create a new [DefaultLocalizer](DefaultLocalizer).
pub fn new(i18n_assets: &'a ASSETS, language_loader: &'a LOADER) -> Self {
pub fn new(language_loader: &'a LOADER, i18n_assets: &'a ASSETS) -> Self {
Self {
i18n_assets,
language_loader,
Expand Down
58 changes: 29 additions & 29 deletions i18n-embed/tests/loader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();
pretty_assertions::assert_eq!("Hello World Localization!", loader.get("hello-world"));
}

Expand All @@ -31,7 +31,7 @@ mod fluent {
let en_gb: LanguageIdentifier = "en-GB".parse().unwrap();

let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_gb]).unwrap();
loader.load_languages(&Localizations, &[en_gb]).unwrap();
pretty_assertions::assert_eq!("Hello World Localisation!", loader.get("hello-world"));
pretty_assertions::assert_eq!("only US", loader.get("only-us"));
}
Expand All @@ -44,9 +44,7 @@ mod fluent {
let en_gb: LanguageIdentifier = "en-GB".parse().unwrap();

let loader = FluentLanguageLoader::new("test", en_us.clone());
loader
.load_languages(&Localizations, &[&ru, &en_gb])
.unwrap();
loader.load_languages(&Localizations, &[ru, en_gb]).unwrap();
pretty_assertions::assert_eq!("Привет Мир Локализация!", loader.get("hello-world"));
pretty_assertions::assert_eq!("only GB", loader.get("only-gb"));
pretty_assertions::assert_eq!("only US", loader.get("only-us"));
Expand All @@ -60,7 +58,7 @@ mod fluent {
let ru: LanguageIdentifier = "ru".parse().unwrap();

let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

let args = maplit::hashmap! {
"userName" => "Tanya"
Expand All @@ -76,7 +74,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();
pretty_assertions::assert_eq!("World (US version)!", loader.get_attr("with-attr", "attr"));
}

Expand All @@ -86,7 +84,7 @@ mod fluent {
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let en_gb: LanguageIdentifier = "en-GB".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_gb]).unwrap();
loader.load_languages(&Localizations, &[en_gb]).unwrap();
let args = maplit::hashmap! {
"name" => "Joe Doe"
};
Expand All @@ -103,7 +101,7 @@ mod fluent {
let ru: LanguageIdentifier = "ru".parse().unwrap();

let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

assert!(loader.has("only-ru-args"));
assert!(loader.has("only-us"));
Expand All @@ -115,7 +113,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();
loader.set_use_isolating(false);
let args = maplit::hashmap! {
"thing" => "thing"
Expand All @@ -129,7 +127,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();
let args = maplit::hashmap! {
"thing" => "thing"
};
Expand All @@ -142,7 +140,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();

let msg = loader.get("multi-line");
assert_eq!(
Expand All @@ -158,7 +156,7 @@ mod fluent {
setup();
let ru: LanguageIdentifier = "ru".parse().unwrap();
let loader = FluentLanguageLoader::new("test", ru.clone());
loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

let msg = loader.get("multi-line");
assert_eq!(
Expand All @@ -174,7 +172,7 @@ mod fluent {
setup();
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
let loader = FluentLanguageLoader::new("test", en_us.clone());
loader.load_languages(&Localizations, &[&en_us]).unwrap();
loader.load_languages(&Localizations, &[en_us]).unwrap();

let args = maplit::hashmap! {
"argOne" => "1",
Expand All @@ -197,7 +195,7 @@ mod fluent {
setup();
let ru: LanguageIdentifier = "ru".parse().unwrap();
let loader = FluentLanguageLoader::new("test", ru.clone());
loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

let args = maplit::hashmap! {
"argOne" => "1",
Expand All @@ -224,13 +222,13 @@ mod fluent {
let loader = FluentLanguageLoader::new("test", en_us);

loader
.load_languages(&Localizations, &[&ru, &en_gb])
.load_languages(&Localizations, &[ru.clone(), en_gb])
.unwrap();

let msg = loader.select_languages(&[&ru]).get("only-ru");
let msg = loader.select_languages(&[ru.clone()]).get("only-ru");
assert_eq!("только русский", msg);

let msg = loader.select_languages(&[&ru]).get("only-gb");
let msg = loader.select_languages(&[ru]).get("only-gb");
assert_eq!("only GB (US Version)", msg);
}

Expand All @@ -243,7 +241,7 @@ mod fluent {
let loader = FluentLanguageLoader::new("test", en_us);

loader
.load_languages(&Localizations, &[&ru, &en_gb])
.load_languages(&Localizations, &[ru.clone(), en_gb])
.unwrap();

let args = maplit::hashmap! {
Expand All @@ -252,7 +250,7 @@ mod fluent {
};

let msg = loader
.select_languages(&[&ru])
.select_languages(&[ru])
.get_args("multi-line-args", args);
assert_eq!(
"Это многострочное сообщение с параметрами.\n\n\
Expand All @@ -273,13 +271,15 @@ mod fluent {
let loader = FluentLanguageLoader::new("test", en_us);

loader
.load_languages(&Localizations, &[&ru, &en_gb])
.load_languages(&Localizations, &[ru.clone(), en_gb.clone()])
.unwrap();

let msg = loader.select_languages(&[&ru, &en_gb]).get("only-gb");
let msg = loader
.select_languages(&[ru.clone(), en_gb.clone()])
.get("only-gb");
assert_eq!("only GB", msg);

let msg = loader.select_languages(&[&ru, &en_gb]).get("only-us");
let msg = loader.select_languages(&[ru, en_gb]).get("only-us");
assert_eq!("only US", msg);
}

Expand All @@ -292,20 +292,20 @@ mod fluent {
let loader = FluentLanguageLoader::new("test", en_us);

loader
.load_languages(&Localizations, &[&ru, &en_gb])
.load_languages(&Localizations, &[ru.clone(), en_gb.clone()])
.unwrap();

let args = maplit::hashmap! {
"userName" => "username",
};

let msg = loader
.select_languages(&[&ru])
.select_languages(&[ru.clone()])
.get_args("only-gb-args", args.clone());
assert_eq!("Hello \u{2068}username\u{2069}! (US Version)", msg);

let msg = loader
.select_languages(&[&ru, &en_gb])
.select_languages(&[ru, en_gb])
.get_args("only-gb-args", args.clone());
assert_eq!("Hello \u{2068}username\u{2069}!", msg);
}
Expand Down Expand Up @@ -357,10 +357,10 @@ mod gettext {
let ru: LanguageIdentifier = "ru".parse().unwrap();
let en: LanguageIdentifier = "en".parse().unwrap();

loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

// It should replace the ru with en
loader.load_languages(&Localizations, &[&en]).unwrap();
loader.load_languages(&Localizations, &[en]).unwrap();

pretty_assertions::assert_eq!("only en", tr("only en"));
pretty_assertions::assert_eq!("only ru", tr("only ru"));
Expand All @@ -376,7 +376,7 @@ mod gettext {
let ru: LanguageIdentifier = "ru".parse().unwrap();

assert!(Localizations::get("ru/i18n_embed.mo").is_some());
loader.load_languages(&Localizations, &[&ru]).unwrap();
loader.load_languages(&Localizations, &[ru]).unwrap();

pretty_assertions::assert_eq!("только ру", tr("only ru"));
pretty_assertions::assert_eq!("only en", tr("only en"));
Expand Down
7 changes: 3 additions & 4 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ use i18n_build::run;
use i18n_config::Crate;
use i18n_embed::{
gettext::{gettext_language_loader, GettextLanguageLoader},
DefaultLocalizer, DesktopLanguageRequester, I18nAssets, LanguageLoader, LanguageRequester,
Localizer,
DefaultLocalizer, DesktopLanguageRequester, LanguageLoader, LanguageRequester, Localizer,
};
use lazy_static::lazy_static;
use rust_embed::RustEmbed;
Expand Down Expand Up @@ -76,8 +75,8 @@ fn main() -> Result<()> {
env_logger::init();
let mut language_requester = DesktopLanguageRequester::new();

let cargo_i18n_localizer =
DefaultLocalizer::new(&*LANGUAGE_LOADER, &TRANSLATIONS as &dyn I18nAssets);
let cargo_i18n_localizer: DefaultLocalizer<'static, _, _> =
DefaultLocalizer::new(&*LANGUAGE_LOADER, &TRANSLATIONS);

let cargo_i18n_localizer_rc = Arc::new(cargo_i18n_localizer);
let i18n_build_localizer_rc = Arc::new(i18n_build::localizer());
Expand Down

0 comments on commit 2acce66

Please sign in to comment.