🐛 (locale): Corrige escapado de L10n::using()

`L10n::using()` insertaba el texto de `L10n::n()` sin escapar,
tratándolo igual que una traducción de confianza (`l()`/`t()`); ahora se
escapa como cualquier otro valor interpolado con `html!`.

Además, `using()` no debe usarse en valores de atributo. Su marcado de
confianza para `l()`/`t()` podría romper el delimitador si la traducción
contuviera una comilla. Se sustituye por `lookup()`
This commit is contained in:
Manuel Cillero 2026-08-12 14:28:47 +02:00
parent 6bea4a5793
commit 3198b74399
13 changed files with 96 additions and 26 deletions

View file

@ -15,9 +15,7 @@ const EXTRA_TEXT_BG: &str = "bootsier.badge.text_bg";
/// use pagetop::prelude::*;
/// use pagetop_bootsier::theme::*;
///
/// let admin = bs::Badge::new()
/// .with_label(L10n::n("Admin"))
/// .with_text_bg(ThemeColor::Danger);
/// let admin = bs::Badge::labeled(L10n::n("Admin")).with_text_bg(ThemeColor::Danger);
/// ```
pub trait BadgeBootsier {
#[builder_fn]

View file

@ -83,7 +83,7 @@ pub(crate) fn render(field: &Field, cx: &mut Context) -> Result<Markup, Componen
@if *field.required() {
span
class="form-required"
title=(L10n::l("field_required").using(cx))
title=[L10n::l("field_required").lookup(cx)]
{
"*"
}

View file

@ -70,7 +70,7 @@ pub(crate) fn render(field: &Field, cx: &mut Context) -> Result<Markup, Componen
@if *field.required() {
span
class="form-required"
title=(L10n::l("field_required").using(cx))
title=[L10n::l("field_required").lookup(cx)]
{
"*"
}
@ -106,7 +106,7 @@ pub(crate) fn render(field: &Field, cx: &mut Context) -> Result<Markup, Componen
}
form::select::Entry::Group(group) => {
optgroup
label=(group.label().using(cx))
label=[group.label().lookup(cx)]
disabled[*group.disabled()]
{
@for opt in group.items() {

View file

@ -76,7 +76,7 @@ pub(crate) fn render(field: &Textarea, cx: &mut Context) -> Result<Markup, Compo
@if *field.required() {
span
class="form-required"
title=(L10n::l("field_required").using(cx))
title=[L10n::l("field_required").lookup(cx)]
{
"*"
}