From fced5d195846230632e825ccde6bffa28ab9f4d6 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Thu, 16 Jul 2026 02:53:43 +0900 Subject: [PATCH] fix(l10n): localize widget/complication placeholder sample labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - placeholder()의 생 한국어 리터럴 6곳을 String(localized:)로: ③다짐 링·④다짐 현황·잠금화면 위젯의 spanLabel "오늘"(기존 키 재사용), 워치 목표/다짐 달성률 "목표"/"하루"(기존 키 재사용), 워치 현재 현황 샘플 "독서"(워치위젯 카탈로그 신규 1키 — en Reading/ja 読書, iOS 위젯 카탈로그와 동일 값) - placeholder는 갤러리/로딩 스켈레톤 전용 경로라 타임라인 예산·버튼 반응성·갱신 경로 무영향 — ①⑤ 위젯 placeholder가 이미 쓰던 패턴과 동일 - 검증: Debug·Store·워치 3스킴 빌드 성공, 전 카탈로그 missing/stale 0 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7 --- .../Haru_DanimWatchWidgets/Localizable.xcstrings | 16 ++++++++++++++++ .../RateComplications.swift | 6 +++--- .../StatusComplication.swift | 2 +- myApp/HaruDanim/Widgets/GoalWidgets.swift | 2 +- myApp/HaruDanim/Widgets/LockScreenWidgets.swift | 2 +- myApp/HaruDanim/Widgets/QuestRingWidget.swift | 2 +- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings b/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings index 89111b1..8555c71 100644 --- a/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings +++ b/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings @@ -195,6 +195,22 @@ } } }, + "독서": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reading" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "読書" + } + } + } + }, "목표": { "localizations": { "en": { diff --git a/myApp/HaruDanim/Haru_DanimWatchWidgets/RateComplications.swift b/myApp/HaruDanim/Haru_DanimWatchWidgets/RateComplications.swift index 5a744e8..e4bc4fd 100644 --- a/myApp/HaruDanim/Haru_DanimWatchWidgets/RateComplications.swift +++ b/myApp/HaruDanim/Haru_DanimWatchWidgets/RateComplications.swift @@ -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 { diff --git a/myApp/HaruDanim/Haru_DanimWatchWidgets/StatusComplication.swift b/myApp/HaruDanim/Haru_DanimWatchWidgets/StatusComplication.swift index 9269c9f..65938fe 100644 --- a/myApp/HaruDanim/Haru_DanimWatchWidgets/StatusComplication.swift +++ b/myApp/HaruDanim/Haru_DanimWatchWidgets/StatusComplication.swift @@ -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) } diff --git a/myApp/HaruDanim/Widgets/GoalWidgets.swift b/myApp/HaruDanim/Widgets/GoalWidgets.swift index 05b7006..b70475a 100644 --- a/myApp/HaruDanim/Widgets/GoalWidgets.swift +++ b/myApp/HaruDanim/Widgets/GoalWidgets.swift @@ -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]) } diff --git a/myApp/HaruDanim/Widgets/LockScreenWidgets.swift b/myApp/HaruDanim/Widgets/LockScreenWidgets.swift index a47f684..869aec5 100644 --- a/myApp/HaruDanim/Widgets/LockScreenWidgets.swift +++ b/myApp/HaruDanim/Widgets/LockScreenWidgets.swift @@ -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 diff --git a/myApp/HaruDanim/Widgets/QuestRingWidget.swift b/myApp/HaruDanim/Widgets/QuestRingWidget.swift index b41fba3..633716f 100644 --- a/myApp/HaruDanim/Widgets/QuestRingWidget.swift +++ b/myApp/HaruDanim/Widgets/QuestRingWidget.swift @@ -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)))) }