Part of making the Localize trait dyn-compatible, also allows a default implementation so generic formatters (such as numbers and strings) don't have to explicitly set their own canonical locale.
5I5NR4DQA6SGUUJXCDBGATRVT2US6HMCCRFJB2YF2YG7ZZKSZHKQC RUFPE6OOIM52WE3EQWYPQQ2DTHGYLNRO6EN3I5UETJW6MDW5AG7AC QM64L3XOUB74M2D7TXDJWXGJNQN46IMF22Y24VNFQ5FEWODLVBLAC 7JPOCQEISAIOD7LV4JYBE6NNUWUKKNE73MEPQYTIZ7PP44ZAD2RAC CESJ4CTO26X4GBZBPXRXLOJT3JQJOGFN5EJSNAAZELNQRZF7QSYAC NEBSVXIASWSJO2CVU3VWRONIWJJDLL3VDS6WNKQBWQBRUUI7RSYAC LU6IFZFGPIKF3CBWZWITWVBSCYWF7Q4UXJDXVRWZ4XV7PKE5RSTQC 7M4UI3TWQIAA333GQ577HDWDWZPSZKWCYG556L6SBRLB6SZDQYPAC 4BMW4JJOJ3XKMSUXDGOG4QC6QPDBC4PBOD3M2RAQQPRAF3CSGXUQC JWZT34UC7OTMMUZKGYFF6NDGIFNOA6TYXAZ6K66ELM3ZW7ZM7I5AC 3NMKD6I57ONAGHEN4PZIAV2KPYESVR4JL3DTWSHXKCMVJBEQ4GIQC 7U2DXFMPZO4P53AMWYCVXG3EPB7UIAPEY4PDDINX4TTABHD5NGMQC XGNME3WRU3MJDTFHUFJYARLVXWBZIH5ODBOIIFTXHNCBTZQH2R7QC O77KA6C4UJGZXVGPEA7WCRQH6XYQJPWETSPDXI3VOKOSRQND7JEQC 73C6NOJ7W7ZCQ2THEZ4HXNZF3734VIPHI5VKQ2CCPLOA4L3JFIIQC BFL2Y7GN6NBXXNAUSD4M6T6CIVQ2OLERPE2CAFSLRF377WFFTVCQC QJC4IQITOQP65AFLA5CMH2EXHB6B3SOLW2XBV72U5ZQU2KOR2EIAC CFJKYXUX4FF2DVAOJ3RRTI4JZPP5GMMDTJCEYM2IS57SCRKGZI6AC IRW6JACS3KVVA6HW5SBNBOHOQ2WRBHYGDND3FUWJYKJC7ZMOAVOQC WWDZWJTRJWSLVFMQFHS7JMDPK5VNDIQ6IHSMES7BVKYHZY6WRYKAC HHJDRLLNN36UNIA7STAXEEVBCEMPJNB7SJQOS3TJLLYN4AEZ4MHQC GJMBIJOE47X7DKZDHIY6VQ2ISC52XAVAV46L6PJQZTV7L7DDSWOAC C6W7N6N57UCNHEV55HEZ3G7WN2ZOBGMFBB5M5ZPDB2HNNHHTOPBQC let attribute: syn::LitStr = syn::parse2(attribute_stream).map_err(ParseError::InvalidAttribute)?;let derive_input: syn::DeriveInput = syn::parse2(derive_input_stream).map_err(ParseError::InvalidDeriveInput)?;
let attribute: syn::LitStr =syn::parse2(attribute_stream).map_err(ParseError::InvalidAttribute)?;let derive_input: syn::DeriveInput =syn::parse2(derive_input_stream).map_err(ParseError::InvalidDeriveInput)?;
const CANONICAL_LOCALE: ::fluent_embed::icu_locale::LanguageIdentifier =::fluent_embed::icu_locale::langid!(#canonical_locale);
fn canonical_locale(&self) -> ::fluent_embed::icu_locale::LanguageIdentifier {::fluent_embed::icu_locale::langid!(#canonical_locale)}
const CANONICAL_LOCALE: ::fluent_embed::icu_locale::LanguageIdentifier =::fluent_embed::icu_locale::langid!("en-US");
fn canonical_locale(&self) -> ::fluent_embed::icu_locale::LanguageIdentifier {::fluent_embed::icu_locale::langid!("en-US")}
const CANONICAL_LOCALE: LanguageIdentifier = langid!("en-US");fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![Self::CANONICAL_LOCALE]}
const CANONICAL_LOCALE: LanguageIdentifier = langid!("en-US");fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![Self::CANONICAL_LOCALE]}
// TODO: this should be project-wide and tracked at build timeconst CANONICAL_LOCALE: LanguageIdentifier;
fn message_for_locale(&self, locale: &LanguageIdentifier) -> String;fn canonical_locale(&self) -> LanguageIdentifier {langid!("en-US")}
fn available_locales(&self) -> Vec<LanguageIdentifier>;fn message_for_locale(&self, locale: &LanguageIdentifier) -> String;
fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![self.canonical_locale()]}
const CANONICAL_LOCALE: LanguageIdentifier = langid!("en-US");fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![Self::CANONICAL_LOCALE]}
const CANONICAL_LOCALE: LanguageIdentifier = langid!("en-US");fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![Self::CANONICAL_LOCALE]}
const CANONICAL_LOCALE: LanguageIdentifier = langid!("en-US");fn available_locales(&self) -> Vec<LanguageIdentifier> {// TODO: keep track of all locales with Fluent data, and return only thosevec![Self::CANONICAL_LOCALE]}