Add bilingual uses fields (food/medicinal/other _de/_en) to species

Backend: add 6 new columns to Species and CreateSpecies structs, update
INSERT/UPDATE queries, add migration 010.
Frontend: add fields to Species type, use pick_desc() for language-aware
display in species detail and cultivar species-info card.
This commit is contained in:
2026-03-15 17:09:25 +01:00
parent 5a37190fd3
commit 896b364b09
6 changed files with 58 additions and 24 deletions
+3 -3
View File
@@ -843,9 +843,9 @@ pub fn CultivarDetail(slug: String) -> Element {
let sp_usda = opt_str(&sp.hardiness_zone_usda);
let sp_nfix = opt_bool(sp.nitrogen_fixer);
let sp_dynacc = opt_bool(sp.dynamic_accumulator);
let sp_food = opt_str(&sp.food_uses);
let sp_med = opt_str(&sp.medicinal_uses);
let sp_other = opt_str(&sp.other_uses);
let sp_food = pick_desc(&current_lang, &sp.food_uses_de, &sp.food_uses_en, &sp.food_uses);
let sp_med = pick_desc(&current_lang, &sp.medicinal_uses_de, &sp.medicinal_uses_en, &sp.medicinal_uses);
let sp_other = pick_desc(&current_lang, &sp.other_uses_de, &sp.other_uses_en, &sp.other_uses);
let sp_wildlife = opt_str(&sp.wildlife_value);
let sp_native = opt_str(&sp.native_range);
rsx! {
+3 -3
View File
@@ -496,9 +496,9 @@ pub fn SpeciesDetail(slug: String) -> Element {
let desc = pick_desc(&current_lang, &s.description_de, &s.description_en, &s.description);
// Uses
let food = os(&s.food_uses);
let med = os(&s.medicinal_uses);
let other = os(&s.other_uses);
let food = pick_desc(&current_lang, &s.food_uses_de, &s.food_uses_en, &s.food_uses);
let med = pick_desc(&current_lang, &s.medicinal_uses_de, &s.medicinal_uses_en, &s.medicinal_uses);
let other = pick_desc(&current_lang, &s.other_uses_de, &s.other_uses_en, &s.other_uses);
let edibility = match s.edibility_rating {
Some(r) => format!("{r}/5"),
None => em.to_string(),
+6
View File
@@ -43,8 +43,14 @@ pub struct Species {
pub salt_tolerance: Option<String>,
pub edibility_rating: Option<i16>,
pub food_uses: Option<String>,
pub food_uses_de: Option<String>,
pub food_uses_en: Option<String>,
pub medicinal_uses: Option<String>,
pub medicinal_uses_de: Option<String>,
pub medicinal_uses_en: Option<String>,
pub other_uses: Option<String>,
pub other_uses_de: Option<String>,
pub other_uses_en: Option<String>,
pub native_range: Option<String>,
pub plant_layer: Option<String>,
pub nitrogen_fixer: Option<bool>,