Files
honeyDueKMP/composeApp/src/commonMain/kotlin/com/tt/honeyDue/models/HomeProfile.kt
T
Trey T db65db6232
Android UI Tests / ui-tests (push) Has been cancelled
i18n: complete app-wide localization (10 languages) + audit tooling
Localize all user-facing strings across iOS (SwiftUI), shared Kotlin, and
Android Compose into en/es/fr/de/pt/it/ja/ko/nl/zh:
- iOS String Catalogs: main + widget Localizable.xcstrings, InfoPlist.xcstrings
  (permissions), plural variations, ~200 new keys translated
- Shared Kotlin ClientStrings table + Android composeResources/values-* (884 keys
  ×10), routed Api/ViewModel/util error & UI strings through localization
- Backend-localized lookups/suggestions consumed via display names
- Widget extension catalog; theme names, home-profile fallbacks, validation,
  network errors, accessibility labels all localized

Add re-runnable verification gates:
- scripts/i18n_audit.py  — enumerate every literal, partition to GAP=0
- scripts/i18n_coverage.py — all 10 locales translated, format-specifier parity

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 20:52:28 -05:00

63 lines
2.7 KiB
Kotlin

package com.tt.honeyDue.models
/**
* Static option lists for home profile pickers (live fallback shown when the
* backend options aren't loaded). Each entry is a (apiValue, displayLabelKey)
* pair: the FIRST element is the stable backend API value and must never
* change; the SECOND element is a [com.tt.honeyDue.i18n.ClientStrings] key
* resolved to a localized label at the render site.
*/
object HomeProfileOptions {
val heatingTypes = listOf(
"gas_furnace" to "home_profile.heating.gas_furnace",
"electric" to "home_profile.heating.electric",
"heat_pump" to "home_profile.heating.heat_pump",
"boiler" to "home_profile.heating.boiler",
"radiant" to "home_profile.heating.radiant",
"wood_stove" to "home_profile.heating.wood_stove",
"none" to "home_profile.heating.none"
)
val coolingTypes = listOf(
"central_ac" to "home_profile.cooling.central_ac",
"window_unit" to "home_profile.cooling.window_unit",
"mini_split" to "home_profile.cooling.mini_split",
"evaporative" to "home_profile.cooling.evaporative",
"none" to "home_profile.cooling.none"
)
val waterHeaterTypes = listOf(
"tank_gas" to "home_profile.water_heater.tank_gas",
"tank_electric" to "home_profile.water_heater.tank_electric",
"tankless" to "home_profile.water_heater.tankless",
"solar" to "home_profile.water_heater.solar",
"heat_pump_wh" to "home_profile.water_heater.heat_pump"
)
val roofTypes = listOf(
"asphalt_shingle" to "home_profile.roof.asphalt_shingle",
"metal" to "home_profile.roof.metal",
"tile" to "home_profile.roof.tile",
"flat_tpo" to "home_profile.roof.flat_tpo",
"slate" to "home_profile.roof.slate",
"wood_shake" to "home_profile.roof.wood_shake"
)
val exteriorTypes = listOf(
"vinyl_siding" to "home_profile.exterior.vinyl_siding",
"brick" to "home_profile.exterior.brick",
"stucco" to "home_profile.exterior.stucco",
"wood" to "home_profile.exterior.wood",
"stone" to "home_profile.exterior.stone",
"fiber_cement" to "home_profile.exterior.fiber_cement"
)
val flooringTypes = listOf(
"hardwood" to "home_profile.flooring.hardwood",
"carpet" to "home_profile.flooring.carpet",
"tile" to "home_profile.flooring.tile",
"laminate" to "home_profile.flooring.laminate",
"vinyl" to "home_profile.flooring.vinyl"
)
val landscapingTypes = listOf(
"lawn" to "home_profile.landscaping.lawn",
"xeriscaping" to "home_profile.landscaping.xeriscaping",
"none" to "home_profile.landscaping.none"
)
}