fix(l10n): localize widget/complication placeholder sample labels

- placeholder()의 생 한국어 리터럴 6곳을 String(localized:)로: ③다짐 링·④다짐 현황·잠금화면 위젯의 spanLabel "오늘"(기존 키 재사용), 워치 목표/다짐 달성률 "목표"/"하루"(기존 키 재사용), 워치 현재 현황 샘플 "독서"(워치위젯 카탈로그 신규 1키 — en Reading/ja 読書, iOS 위젯 카탈로그와 동일 값)
- placeholder는 갤러리/로딩 스켈레톤 전용 경로라 타임라인 예산·버튼 반응성·갱신 경로 무영향 — ①⑤ 위젯 placeholder가 이미 쓰던 패턴과 동일
- 검증: Debug·Store·워치 3스킴 빌드 성공, 전 카탈로그 missing/stale 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
This commit is contained in:
songyc macbook 2026-07-16 02:53:43 +09:00
parent 2b6ca94f09
commit fced5d1958
6 changed files with 23 additions and 7 deletions

View File

@ -195,6 +195,22 @@
}
}
},
"독서": {
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Reading"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "読書"
}
}
}
},
"목표": {
"localizations": {
"en": {

View File

@ -56,8 +56,8 @@ struct GoalRateProvider: AppIntentTimelineProvider {
}
func placeholder(in context: Context) -> GoalRateEntry {
GoalRateEntry(date: .now, locked: false, title: "목표", symbolName: "flag.checkered",
spanLabel: "하루", ratio: 0.6)
GoalRateEntry(date: .now, locked: false, title: String(localized: "목표"), symbolName: "flag.checkered",
spanLabel: String(localized: "하루"), ratio: 0.6)
}
func snapshot(for configuration: GoalRateConfigIntent, in context: Context) async -> GoalRateEntry {
@ -200,7 +200,7 @@ struct QuestRateProvider: AppIntentTimelineProvider {
}
func placeholder(in context: Context) -> QuestRateEntry {
QuestRateEntry(date: .now, locked: false, quest: nil, spanRaw: "day", spanLabel: "하루")
QuestRateEntry(date: .now, locked: false, quest: nil, spanRaw: "day", spanLabel: String(localized: "하루"))
}
func snapshot(for configuration: QuestRateConfigIntent, in context: Context) async -> QuestRateEntry {

View File

@ -51,7 +51,7 @@ struct StatusProvider: TimelineProvider {
}
func placeholder(in context: Context) -> StatusEntry {
StatusEntry(date: .now, locked: false, runningName: "독서", runningSymbol: "book.fill",
StatusEntry(date: .now, locked: false, runningName: String(localized: "독서"), runningSymbol: "book.fill",
runningStartAt: .now, extraCount: 0)
}

View File

@ -457,7 +457,7 @@ struct QuestStatusProvider: AppIntentTimelineProvider {
}
func placeholder(in context: Context) -> QuestStatusEntry {
QuestStatusEntry(date: .now, locked: false, theme: .matchApp, spanLabel: "오늘",
QuestStatusEntry(date: .now, locked: false, theme: .matchApp, spanLabel: String(localized: "오늘"),
largeStyle: .manyQuests, goals: [.sample])
}

View File

@ -80,7 +80,7 @@ struct LockGoalProvider: AppIntentTimelineProvider {
func placeholder(in context: Context) -> LockGoalEntry {
let goal = GoalSnapshot.sample
return LockGoalEntry(date: .now, locked: false, spanLabel: "오늘", style: .gauge, goal: goal, ratio: goal.dayRatio)
return LockGoalEntry(date: .now, locked: false, spanLabel: String(localized: "오늘"), style: .gauge, goal: goal, ratio: goal.dayRatio)
}
@MainActor

View File

@ -75,7 +75,7 @@ struct QuestRingProvider: AppIntentTimelineProvider {
}
func placeholder(in context: Context) -> QuestRingEntry {
QuestRingEntry(date: .now, locked: false, theme: .matchApp, spanLabel: "오늘",
QuestRingEntry(date: .now, locked: false, theme: .matchApp, spanLabel: String(localized: "오늘"),
cells: Array(QuestCellSnapshot.samples.prefix(Self.capacity(context.family))))
}