mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
Replaces every stringly-typed localization key in the Apple app with compile-time-checked accessors generated from localization/strings.json. A mistyped key is now a build error instead of a silent fallback to the raw key at runtime. The runtime path is unchanged: plain keys are String.LocalizationValue constants resolved with String(localized:) and Apple's String Catalog still does the lookup; keys with arguments become typed, named functions applying args through String(format:). Generator: new renderSwiftAccessors emits apple/VniDrop/Generated/L10n.swift, wired into generate. Renamed generic arg1/arg2 tokens on four keys to semantic names (receiver, transferName, deviceId) and updated their context notes; positional output is unchanged so .xcstrings (bar the 4 comments) and the Android XML regenerate identical. Migration: every key-carrying value flipped to String.LocalizationValue end to end, resolved only at the leaf. Zero key literals and zero LocalizedStringKey remain in app or test code. macOS build passes; iOS test run pending.
28 lines
629 B
Swift
28 lines
629 B
Swift
import Foundation
|
|
|
|
/// Top-level destinations, ported from `ui/navigation/AppDestination.kt`.
|
|
enum AppDestination: String, CaseIterable, Identifiable {
|
|
case send
|
|
case receive
|
|
case settings
|
|
|
|
var id: String { rawValue }
|
|
|
|
var labelKey: String.LocalizationValue {
|
|
switch self {
|
|
case .send: return L10n.Nav.send
|
|
case .receive: return L10n.Nav.receive
|
|
case .settings: return L10n.Nav.settings
|
|
}
|
|
}
|
|
|
|
/// SF Symbol approximating the Compose line icon.
|
|
var systemImage: String {
|
|
switch self {
|
|
case .send: return "paperplane"
|
|
case .receive: return "tray.and.arrow.down"
|
|
case .settings: return "gearshape"
|
|
}
|
|
}
|
|
}
|