mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'juliancoffee/new-fluent-abilities' into 'master'
Use fluent attributes for abilities See merge request veloren/veloren!3549
This commit is contained in:
commit
74e8dbf757
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Possessing Arrow
|
||||
common-abilities-debug-possess-desc = Shoots a poisonous arrow. Lets you control your target.
|
||||
common-abilities-sword-spin-name = Whirlwind
|
||||
common-abilities-sword-spin-desc = Move forward while spinning with your sword.
|
||||
common-abilities-axe-leap-name = Axe Jump
|
||||
common-abilities-axe-leap-desc = A jump with the slashing leap to position of cursor.
|
||||
common-abilities-hammer-leap-name = Smash of Doom
|
||||
common-abilities-hammer-leap-desc = An AOE attack with knockback. Leaps to position of cursor.
|
||||
common-abilities-bow-shotgun-name = Burst
|
||||
common-abilities-bow-shotgun-desc = Launches a burst of arrows
|
||||
common-abilities-staff-fireshockwave-name = Ring of Fire
|
||||
common-abilities-staff-fireshockwave-desc = Ignites the ground with fiery shockwave.
|
||||
common-abilities-sceptre-wardingaura-name = Warding Aura
|
||||
common-abilities-sceptre-wardingaura-desc = Wards your allies against enemy attacks.
|
||||
common-abilities-unknown-name = Ability has no title
|
||||
common-abilities-unknown-desc = Ability has no description
|
||||
common-abilities-debug-possess = Possessing Arrow
|
||||
.desc = Shoots a poisonous arrow. Lets you control your target.
|
||||
common-abilities-sword-spin = Whirlwind
|
||||
.desc = Move forward while spinning with your sword.
|
||||
common-abilities-axe-leap = Axe Jump
|
||||
.desc = A jump with the slashing leap to position of cursor.
|
||||
common-abilities-hammer-leap = Smash of Doom
|
||||
.desc = An AOE attack with knockback. Leaps to position of cursor.
|
||||
common-abilities-bow-shotgun = Burst
|
||||
.desc = Launches a burst of arrows
|
||||
common-abilities-staff-fireshockwave = Ring of Fire
|
||||
.desc = Ignites the ground with fiery shockwave.
|
||||
common-abilities-sceptre-wardingaura = Warding Aura
|
||||
.desc = Wards your allies against enemy attacks.
|
||||
|
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Strzała Opętania
|
||||
common-abilities-debug-possess-desc = Pozwala przejąć kontrolę nad twoim celem.
|
||||
common-abilities-sword-spin-name = Cyklon
|
||||
common-abilities-sword-spin-desc = Poruszasz się do przodu kręcąc się z Twoim mieczem.
|
||||
common-abilities-axe-leap-name = Skok Drwala
|
||||
common-abilities-axe-leap-desc = Skaczesz w kierunku kursora, tnąc swoją siekierą.
|
||||
common-abilities-hammer-leap-name = Uderzenie Zagłady
|
||||
common-abilities-hammer-leap-desc = Atak obszarowy z odrzutem. Skaczesz w kierunku kursora, uderzając w ziemię swoim młotem.
|
||||
common-abilities-bow-shotgun-name = Salwa
|
||||
common-abilities-bow-shotgun-desc = Wystrzeliwujesz salwę strzał.
|
||||
common-abilities-staff-fireshockwave-name = Pierścień Ognia
|
||||
common-abilities-staff-fireshockwave-desc = Przywołujesz ognisty pierścień odrzucający przeciwników.
|
||||
common-abilities-sceptre-wardingaura-name = Ochronna Aura
|
||||
common-abilities-sceptre-wardingaura-desc = Chroni twoich sojuszników przed atakami.
|
||||
common-abilities-unknown-name = Umiejętność bez nazwy
|
||||
common-abilities-unknown-desc = Umiejętność bez opisu
|
||||
common-abilities-debug-possess = Strzała Opętania
|
||||
.desc = Pozwala przejąć kontrolę nad twoim celem.
|
||||
common-abilities-sword-spin = Cyklon
|
||||
.desc = Poruszasz się do przodu kręcąc się z Twoim mieczem.
|
||||
common-abilities-axe-leap = Skok Drwala
|
||||
.desc = Skaczesz w kierunku kursora, tnąc swoją siekierą.
|
||||
common-abilities-hammer-leap = Uderzenie Zagłady
|
||||
.desc = Atak obszarowy z odrzutem. Skaczesz w kierunku kursora, uderzając w ziemię swoim młotem.
|
||||
common-abilities-bow-shotgun = Salwa
|
||||
.desc = Wystrzeliwujesz salwę strzał.
|
||||
common-abilities-staff-fireshockwave = Pierścień Ognia
|
||||
.desc = Przywołujesz ognisty pierścień odrzucający przeciwników.
|
||||
common-abilities-sceptre-wardingaura = Ochronna Aura
|
||||
.desc = Chroni twoich sojuszników przed atakami.
|
||||
|
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Flecha Marionete
|
||||
common-abilities-debug-possess-desc = Atira uma flecha venenosa que deixa você controlar seu alvo.
|
||||
common-abilities-sword-spin-name = Redemoinho
|
||||
common-abilities-sword-spin-desc = Movimento frontal girando com sua espada.
|
||||
common-abilities-axe-leap-name = Machadada Pulante
|
||||
common-abilities-axe-leap-desc = Um pulo cortante na direção do cursor do mouse.
|
||||
common-abilities-hammer-leap-name = Golpe da Ruína
|
||||
common-abilities-hammer-leap-desc = Um Ataque em Área que inflige Empurrão. Salta na direção do cursor do mouse.
|
||||
common-abilities-bow-shotgun-name = Estrondo
|
||||
common-abilities-bow-shotgun-desc = Atira uma sequência de flechas
|
||||
common-abilities-staff-fireshockwave-name = Anel de Fogo
|
||||
common-abilities-staff-fireshockwave-desc = Incendeia o chão com uma onda de chamas.
|
||||
common-abilities-sceptre-wardingaura-name = Aura Protetora
|
||||
common-abilities-sceptre-wardingaura-desc = Protege seus aliados contra ataques inimigos.
|
||||
common-abilities-unknown-name = Habilidade sem título
|
||||
common-abilities-unknown-desc = Habilidade sem descrição
|
||||
common-abilities-debug-possess = Flecha Marionete
|
||||
.desc = Atira uma flecha venenosa que deixa você controlar seu alvo.
|
||||
common-abilities-sword-spin = Redemoinho
|
||||
.desc = Movimento frontal girando com sua espada.
|
||||
common-abilities-axe-leap = Machadada Pulante
|
||||
.desc = Um pulo cortante na direção do cursor do mouse.
|
||||
common-abilities-hammer-leap = Golpe da Ruína
|
||||
.desc = Um Ataque em Área que inflige Empurrão. Salta na direção do cursor do mouse.
|
||||
common-abilities-bow-shotgun = Estrondo
|
||||
.desc = Atira uma sequência de flechas
|
||||
common-abilities-staff-fireshockwave = Anel de Fogo
|
||||
.desc = Incendeia o chão com uma onda de chamas.
|
||||
common-abilities-sceptre-wardingaura = Aura Protetora
|
||||
.desc = Protege seus aliados contra ataques inimigos.
|
||||
|
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Săgeată Manipulatoare
|
||||
common-abilities-debug-possess-desc = Trage o săgeată otrăvitoare care te lasă să controlezi inamicul.
|
||||
common-abilities-sword-spin-name = Vârtej de vânt
|
||||
common-abilities-sword-spin-desc = Mișcă-te înainte în timp ce te rotești cu sabia.
|
||||
common-abilities-axe-leap-name = Saltul Toporului
|
||||
common-abilities-axe-leap-desc = Un salt cu mișcare tăioasă la poziția cursorului.
|
||||
common-abilities-hammer-leap-name = Lovitura Morții
|
||||
common-abilities-hammer-leap-desc = Un atac „Zonă de Efect” cu aruncare. Salt la poziția cursorului.
|
||||
common-abilities-bow-shotgun-name = Burst
|
||||
common-abilities-bow-shotgun-desc = Trage rapid mai multe sageți
|
||||
common-abilities-staff-fireshockwave-name = Inel de Foc
|
||||
common-abilities-staff-fireshockwave-desc = Aprinde pământul cu undă de șoc în flăcări.
|
||||
common-abilities-sceptre-wardingaura-name = Aură Protectoare
|
||||
common-abilities-sceptre-wardingaura-desc = Protejează aliații tăi împotriva atacutilor inamicilor
|
||||
common-abilities-unknown-name = Ablitatea nu are titlu
|
||||
common-abilities-unknown-desc = Ablitatea nu are descripție
|
||||
common-abilities-debug-possess = Săgeată Manipulatoare
|
||||
.desc = Trage o săgeată otrăvitoare care te lasă să controlezi inamicul.
|
||||
common-abilities-sword-spin = Vârtej de vânt
|
||||
.desc = Mișcă-te înainte în timp ce te rotești cu sabia.
|
||||
common-abilities-axe-leap = Saltul Toporului
|
||||
.desc = Un salt cu mișcare tăioasă la poziția cursorului.
|
||||
common-abilities-hammer-leap = Lovitura Morții
|
||||
.desc = Un atac „Zonă de Efect” cu aruncare. Salt la poziția cursorului.
|
||||
common-abilities-bow-shotgun = Burst
|
||||
.desc = Trage rapid mai multe sageți
|
||||
common-abilities-staff-fireshockwave = Inel de Foc
|
||||
.desc = Aprinde pământul cu undă de șoc în flăcări.
|
||||
common-abilities-sceptre-wardingaura = Aură Protectoare
|
||||
.desc = Protejează aliații tăi împotriva atacutilor inamicilor
|
||||
|
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Besittningspil
|
||||
common-abilities-debug-possess-desc = Skjuter en förgiftad pil. Låter dig kontrollera ditt mål.
|
||||
common-abilities-sword-spin-name = Virvelvind
|
||||
common-abilities-sword-spin-desc = Flytta dig framåt medan du snurrar med ditt svärd.
|
||||
common-abilities-axe-leap-name = Yxhopp
|
||||
common-abilities-axe-leap-desc = Ett hopp med det skärande språnget riktat mot pekarens position.
|
||||
common-abilities-hammer-leap-name = Nederslag
|
||||
common-abilities-hammer-leap-desc = En attack som träffar ett område och knuffar fiender. Hoppar mot pekarens position.
|
||||
common-abilities-bow-shotgun-name = Pilskur
|
||||
common-abilities-bow-shotgun-desc = Skjuter iväg en skur av pilar.
|
||||
common-abilities-staff-fireshockwave-name = Eldens ring
|
||||
common-abilities-staff-fireshockwave-desc = Tänder eld på marken med en eldig stötvåg.
|
||||
common-abilities-sceptre-wardingaura-name = Vårdande Aura
|
||||
common-abilities-sceptre-wardingaura-desc = Skyddar dina allierade mot fiendens attacker.
|
||||
common-abilities-unknown-name = Förmågan har ingen titel
|
||||
common-abilities-unknown-desc = Förmågan har ingen beskrivning
|
||||
common-abilities-debug-possess = Besittningspil
|
||||
.desc = Skjuter en förgiftad pil. Låter dig kontrollera ditt mål.
|
||||
common-abilities-sword-spin = Virvelvind
|
||||
.desc = Flytta dig framåt medan du snurrar med ditt svärd.
|
||||
common-abilities-axe-leap = Yxhopp
|
||||
.desc = Ett hopp med det skärande språnget riktat mot pekarens position.
|
||||
common-abilities-hammer-leap = Nederslag
|
||||
.desc = En attack som träffar ett område och knuffar fiender. Hoppar mot pekarens position.
|
||||
common-abilities-bow-shotgun = Pilskur
|
||||
.desc = Skjuter iväg en skur av pilar.
|
||||
common-abilities-staff-fireshockwave = Eldens ring
|
||||
.desc = Tänder eld på marken med en eldig stötvåg.
|
||||
common-abilities-sceptre-wardingaura = Vårdande Aura
|
||||
.desc = Skyddar dina allierade mot fiendens attacker.
|
||||
|
@ -1,16 +1,14 @@
|
||||
common-abilities-debug-possess-name = Заклинаюча Стріла
|
||||
common-abilities-debug-possess-desc = Стріляє отруйною стрілою. Дає тобі контроль над ціллю.
|
||||
common-abilities-sword-spin-name = Буревій
|
||||
common-abilities-sword-spin-desc = Рушай вперед кружляючи з мечем.
|
||||
common-abilities-axe-leap-name = Стрибок Сокири
|
||||
common-abilities-axe-leap-desc = Стрибок з рубаним ударом, слідує за курсором.
|
||||
common-abilities-hammer-leap-name = Погром
|
||||
common-abilities-hammer-leap-desc = Атака по області. Стрибок спрямований за курсором.
|
||||
common-abilities-bow-shotgun-name = Стріловик
|
||||
common-abilities-bow-shotgun-desc = Постріл купою стріл за раз.
|
||||
common-abilities-staff-fireshockwave-name = Кільце Вогню
|
||||
common-abilities-staff-fireshockwave-desc = Підпалює землю вогненною ударною хвилєю.
|
||||
common-abilities-sceptre-wardingaura-name = Захисна Аура
|
||||
common-abilities-sceptre-wardingaura-desc = Укріплює тебе і твоїх спільників силами природи на деякий час.
|
||||
common-abilities-unknown-name = Неназвана Здатність
|
||||
common-abilities-unknown-desc = Здатність без опису
|
||||
common-abilities-debug-possess = Заклинаюча Стріла
|
||||
.desc = Стріляє отруйною стрілою. Дає тобі контроль над ціллю.
|
||||
common-abilities-sword-spin = Буревій
|
||||
.desc = Рушай вперед кружляючи з мечем.
|
||||
common-abilities-axe-leap = Стрибок Сокири
|
||||
.desc = Стрибок з рубаним ударом, слідує за курсором.
|
||||
common-abilities-hammer-leap = Погром
|
||||
.desc = Атака по області. Стрибок спрямований за курсором.
|
||||
common-abilities-bow-shotgun = Стріловик
|
||||
.desc = Постріл купою стріл за раз.
|
||||
common-abilities-staff-fireshockwave = Кільце Вогню
|
||||
.desc = Підпалює землю вогненною ударною хвилєю.
|
||||
common-abilities-sceptre-wardingaura = Захисна Аура
|
||||
.desc = Укріплює тебе і твоїх спільників силами природи на деякий час.
|
||||
|
@ -86,6 +86,26 @@ impl Language {
|
||||
Some(msg)
|
||||
}
|
||||
|
||||
fn try_attr<'a>(
|
||||
&'a self,
|
||||
key: &str,
|
||||
attr: &str,
|
||||
args: Option<&'a FluentArgs>,
|
||||
) -> Option<Cow<'a, str>> {
|
||||
let bundle = &self.bundle;
|
||||
let msg = bundle.get_message(key)?;
|
||||
let attr = msg.get_attribute(attr)?;
|
||||
let attr = attr.value();
|
||||
|
||||
let mut errs = Vec::new();
|
||||
let msg = bundle.format_pattern(attr, args, &mut errs);
|
||||
for err in errs {
|
||||
tracing::error!("err: {err} for {key}");
|
||||
}
|
||||
|
||||
Some(msg)
|
||||
}
|
||||
|
||||
fn try_variation<'a>(
|
||||
&'a self,
|
||||
key: &str,
|
||||
@ -291,6 +311,10 @@ impl LocalizationGuard {
|
||||
.unwrap_or_else(|| Cow::Owned(key.to_owned()))
|
||||
}
|
||||
|
||||
/// Get a localized text from the variation of given key
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
pub fn try_variation(&self, key: &str, seed: u16) -> Option<Cow<str>> {
|
||||
self.active.try_variation(key, seed, None).or_else(|| {
|
||||
self.fallback
|
||||
@ -299,11 +323,22 @@ impl LocalizationGuard {
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a localized text from the variation of given key
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
/// If the key is not present in the localization object
|
||||
/// then the key itself is returned.
|
||||
pub fn get_variation(&self, key: &str, seed: u16) -> Cow<str> {
|
||||
self.try_variation(key, seed)
|
||||
.unwrap_or_else(|| Cow::Owned(key.to_owned()))
|
||||
}
|
||||
|
||||
/// Get a localized text from the variation of given key with given
|
||||
/// arguments
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
pub fn try_variation_ctx<'a>(
|
||||
&'a self,
|
||||
key: &str,
|
||||
@ -325,11 +360,77 @@ impl LocalizationGuard {
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a localized text from the variation of given key with given
|
||||
/// arguments
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
/// If the key is not present in the localization object
|
||||
/// then the key itself is returned.
|
||||
pub fn get_variation_ctx<'a>(&'a self, key: &str, seed: u16, args: &'a FluentArgs) -> Cow<str> {
|
||||
self.try_variation_ctx(key, seed, args)
|
||||
.unwrap_or_else(|| Cow::Owned(key.to_owned()))
|
||||
}
|
||||
|
||||
/// Get a localized text from the given key by given attribute
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
pub fn try_attr(&self, key: &str, attr: &str) -> Option<Cow<str>> {
|
||||
self.active.try_attr(key, attr, None).or_else(|| {
|
||||
self.fallback
|
||||
.as_ref()
|
||||
.and_then(|fb| fb.try_attr(key, attr, None))
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a localized text from the given key by given attribute
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
/// If the key is not present in the localization object
|
||||
/// then the key itself is returned.
|
||||
pub fn get_attr(&self, key: &str, attr: &str) -> Cow<str> {
|
||||
self.try_attr(key, attr)
|
||||
.unwrap_or_else(|| Cow::Owned(format!("{key}.{attr}")))
|
||||
}
|
||||
|
||||
/// Get a localized text from the given key by given attribute and arguments
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
pub fn try_attr_ctx<'a>(
|
||||
&'a self,
|
||||
key: &str,
|
||||
attr: &str,
|
||||
args: &'a FluentArgs,
|
||||
) -> Option<Cow<str>> {
|
||||
self.active
|
||||
.try_attr(key, attr, Some(args))
|
||||
.or_else(|| {
|
||||
self.fallback
|
||||
.as_ref()
|
||||
.and_then(|fb| fb.try_attr(key, attr, Some(args)))
|
||||
})
|
||||
.map(|x| {
|
||||
// NOTE:
|
||||
// Hack. Remove Unicode Directionality Marks, conrod doesn't support them.
|
||||
let res = x.replace('\u{2068}', "").replace('\u{2069}', "");
|
||||
Cow::Owned(res)
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a localized text from the given key by given attribute and arguments
|
||||
///
|
||||
/// First lookup is done in the active language, second in
|
||||
/// the fallback (if present).
|
||||
/// If the key is not present in the localization object
|
||||
/// then the key itself is returned.
|
||||
pub fn get_attr_ctx<'a>(&'a self, key: &str, attr: &str, args: &'a FluentArgs) -> Cow<str> {
|
||||
self.try_attr_ctx(key, attr, args)
|
||||
.unwrap_or_else(|| Cow::Owned(format!("{key}.{attr}")))
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn fonts(&self) -> &Fonts { &self.active.fonts }
|
||||
|
||||
|
@ -359,22 +359,7 @@ pub fn ability_description<'a>(
|
||||
ability_id: &str,
|
||||
loc: &'a Localization,
|
||||
) -> (Cow<'a, str>, Cow<'a, str>) {
|
||||
// TODO: Use fluent attribute mechanic
|
||||
let (name, desc) = (
|
||||
format!("{}.name", ability_id).replace('.', "-"),
|
||||
format!("{}.desc", ability_id).replace('.', "-"),
|
||||
);
|
||||
let ability = ability_id.replace('.', "-");
|
||||
|
||||
// 1) Try localize ability
|
||||
// 2) If not, say that ability is unknown
|
||||
// 3) If unknown key is missed, just return id
|
||||
// TODO: better algorithm?
|
||||
(
|
||||
loc.try_msg(&name)
|
||||
.or_else(|| loc.try_msg("common-abilities-unknown-name"))
|
||||
.unwrap_or(Cow::Owned(name)),
|
||||
loc.try_msg(&desc)
|
||||
.or_else(|| loc.try_msg("common-abilities-unknown-desc"))
|
||||
.unwrap_or(Cow::Owned(desc)),
|
||||
)
|
||||
(loc.get_msg(&ability), loc.get_attr(&ability, "desc"))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user