db65db6232
Android UI Tests / ui-tests (push) Has been cancelled
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>
63 lines
2.7 KiB
Kotlin
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"
|
|
)
|
|
}
|