Add `locale` parameter to derived `localize()` function
Dependencies
- [2]
2XQ6ZB4WStore multiple locales in a single `Group` - [3]
QSK7JRBAAdd simple `attribute_path` function - [4]
HJMYJDC7Simplify `fluent_embed::group` module - [5]
XEEXWJLGAdd simple end-to-end test for selectors - [6]
VNSHGQYNSupport using glob paths in `localize` macro - [7]
XGNME3WRMove `Group::derive_enum` to new `crate::parse_macro` module - [8]
5FIVUZYFUnify `fluent_embed` macro API as `localize()` - [*]
5TEX4MNUSplit `fluent_embed` into `group` and `parse` modules - [*]
ROSR4HD5Parse captured glob as locale
Change contents
- replacement in fluent_embed/src/parse_macro.rs at line 37
messages.push(crate::parse_fluent::message(group.canonical_message_for(&kebab_case_ident),));messages.push(group.message(&kebab_case_ident)); - replacement in fluent_embed/src/parse_macro.rs at line 42
fn localize(&self, plural_rules: &::icu_plurals::PluralRules) -> String {fn localize(&self, locale: &::icu_locid::Locale, plural_rules: &::icu_plurals::PluralRules) -> String { - edit in fluent_embed/src/group.rs at line 5[11.417][2.461]
use syn::parse_quote; - edit in fluent_embed/src/group.rs at line 20
fn to_syn(&self, canonical_locale: String) -> syn::ExprBlock {let additional_locales = self.additional_messages.keys().map(|locale| locale.to_string()).map(|locale_string| syn::LitStr::new(&locale_string, proc_macro2::Span::call_site()));let additional_messages = self.additional_messages.values().map(crate::parse_fluent::message);let canonical_locale = syn::LitStr::new(&canonical_locale, proc_macro2::Span::call_site());let canonical_message = crate::parse_fluent::message(&self.canonical_message);parse_quote! {{#(if locale.normalizing_eq(#additional_locales) { return #additional_messages })else*assert!(locale.normalizing_eq(#canonical_locale));#canonical_message}}} - edit in fluent_embed/src/group.rs at line 87
}pub fn message(&self, id: &str) -> syn::ExprBlock {self.messages.get(id).unwrap().to_syn(self.canonical_locale.to_string()) - edit in cli_macros/tests/selectors.rs at line 14
let locale = locale!("en-US"); - replacement in cli_macros/tests/selectors.rs at line 16
PluralRules::try_new(&locale!("en").into(), PluralRuleType::Cardinal).unwrap();PluralRules::try_new(&locale.clone().into(), PluralRuleType::Cardinal).unwrap(); - replacement in cli_macros/tests/selectors.rs at line 31
message.localize(&plural_rules),message.localize(&locale, &plural_rules),