diff --git a/pagetop-admin/src/lib.rs b/pagetop-admin/src/lib.rs index 61f10e5e..579df55e 100644 --- a/pagetop-admin/src/lib.rs +++ b/pagetop-admin/src/lib.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; use_handle!(MODULE_ADMIN); -use_locale!(LOCALE_ADMIN, "src/locale"); +use_locale!(LOCALE_ADMIN); mod summary; diff --git a/pagetop-bootsier/src/lib.rs b/pagetop-bootsier/src/lib.rs index 91501290..4a9d8d16 100644 --- a/pagetop-bootsier/src/lib.rs +++ b/pagetop-bootsier/src/lib.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; use_handle!(THEME_BOOTSIER); -use_locale!(LOCALE_BOOTSIER, "src/locale"); +use_locale!(LOCALE_BOOTSIER); use_static!(bootsier); diff --git a/pagetop-homedemo/src/lib.rs b/pagetop-homedemo/src/lib.rs index 2af1f4ad..314917e9 100644 --- a/pagetop-homedemo/src/lib.rs +++ b/pagetop-homedemo/src/lib.rs @@ -3,7 +3,7 @@ use pagetop_minimal::component::*; use_handle!(MODULE_DEMOHOME); -use_locale!(LOCALE_DEMOHOME, "src/locale"); +use_locale!(LOCALE_DEMOHOME); use_static!(homedemo); diff --git a/pagetop-minimal/src/module/menu.rs b/pagetop-minimal/src/module/menu.rs index 7fd844c1..b1188eac 100644 --- a/pagetop-minimal/src/module/menu.rs +++ b/pagetop-minimal/src/module/menu.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; use_handle!(MODULE_MENU); -use_locale!(LOCALE_MENU, "src/module/menu/locales"); +use_locale!(LOCALE_MENU["src/module/menu/locales"]); pub struct Menu; diff --git a/pagetop-node/src/lib.rs b/pagetop-node/src/lib.rs index 2548b57b..89c22ac9 100644 --- a/pagetop-node/src/lib.rs +++ b/pagetop-node/src/lib.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; use_handle!(MODULE_NODE); -use_locale!(LOCALE_NODE, "src/locale"); +use_locale!(LOCALE_NODE); //mod entity; mod migration; diff --git a/pagetop-user/src/lib.rs b/pagetop-user/src/lib.rs index fe5134c2..9dfb312c 100644 --- a/pagetop-user/src/lib.rs +++ b/pagetop-user/src/lib.rs @@ -3,7 +3,7 @@ use pagetop_minimal::component::*; use_handle!(MODULE_USER); -use_locale!(LOCALE_USER, "src/locale"); +use_locale!(LOCALE_USER); mod migration; diff --git a/pagetop/src/lib.rs b/pagetop/src/lib.rs index e68e6ebd..43520718 100644 --- a/pagetop/src/lib.rs +++ b/pagetop/src/lib.rs @@ -117,7 +117,7 @@ pub type HashMapResources = std::collections::HashMap<&'static str, StaticResour pub type Handle = u64; -use_locale!(LOCALE_PAGETOP, "src/locale"); +use_locale!(LOCALE_PAGETOP); // ************************************************************************************************* // APIs PÚBLICAS. diff --git a/pagetop/src/locale.rs b/pagetop/src/locale.rs index 7954c4c4..e755a196 100644 --- a/pagetop/src/locale.rs +++ b/pagetop/src/locale.rs @@ -70,15 +70,25 @@ //! # Cómo aplicar la localización en tu código //! //! Una vez hayas creado tu directorio de recursos FTL usa la macro -//! [`use_locale!`](crate::use_locale) para integrarlos en tu módulo o aplicación. +//! [`use_locale!`](crate::use_locale) para integrarlos en tu módulo o aplicación. Si tus recursos +//! se encuentran en el directorio `"src/locale"` bastará con declarar: //! //! ``` //! use pagetop::prelude::*; //! -//! use_locale!(LOCALE_SAMPLE, "src/locale"); +//! use_locale!(LOCALE_SAMPLE); //! ``` -//! Y usa el componente [L10n](crate::base::component::L10n) para incluir en las respuestas a -//! peticiones web, textos y contenidos opcionalmente traducibles según el contexto de renderizado. +//! +//! Y si están en otro directorio, entonces puedes usar: +//! +//! ``` +//! use pagetop::prelude::*; +//! +//! use_locale!(LOCALE_SAMPLE["path/to/locale"]); +//! ``` +//! +//! Usa el componente [L10n](crate::base::component::L10n) para incluir textos y contenidos +//! opcionalmente traducibles según el contexto de renderizado. use crate::{args, config, trace, LazyStatic}; diff --git a/pagetop/src/util.rs b/pagetop/src/util.rs index 2503e47e..feb4eae1 100644 --- a/pagetop/src/util.rs +++ b/pagetop/src/util.rs @@ -91,7 +91,21 @@ macro_rules! use_handle { #[macro_export] /// Define un conjunto de elementos de localización y funciones locales de traducción. macro_rules! use_locale { - ( $LOCALES:ident, $dir_locales:literal $(, $core_locales:literal)? ) => { + ( $LOCALES:ident $(, $core_locales:literal)? ) => { + use $crate::locale::*; + + fluent_templates::static_loader! { + pub static $LOCALES = { + locales: "src/locale", + $( core_locales: $core_locales, )? + fallback_language: "en-US", + + // Elimina las marcas Unicode que delimitan los argumentos. + customise: |bundle| bundle.set_use_isolating(false), + }; + } + }; + ( $LOCALES:ident[$dir_locales:literal] $(, $core_locales:literal)? ) => { use $crate::locale::*; fluent_templates::static_loader! {