fix(mac): localize CFBundleName so Mac menu bar shows proper app name

- 실사용 보고: 아이폰·아이패드는 '하루 다님'인데 맥 메뉴 막대는 'Haru_Danim'
- 원인: 맥은 CFBundleName을 표시하는데, InfoPlist 카탈로그의 CFBundleName이
  원시값 "Haru_Danim"(ko만, shouldTranslate=false)으로 추출돼 있었음 —
  iOS 홈 화면은 CFBundleDisplayName(정상 현지화)이라 드러나지 않던 값
- 수정: 카탈로그 CFBundleName을 ko '하루 다님' / en·ja 'Haru Danim'으로 교정
  (CFBundleDisplayName과 동일 표기), shouldTranslate 플래그 제거
- 베이스 Info.plist의 CFBundleName은 생성기가 PRODUCT_NAME으로 항상 덮어써
  교체 불가(클린 빌드로 검증) — 미지원 언어도 개발 언어(ko) 폴백이라 원시값
  노출 없음, Info.plist에 주석으로 기록
- 검증: 빌드 산출물 ko/en/ja InfoPlist.strings 값 확인, Debug/Store/맥 빌드 성공

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014CkLDi8Lr21vGqo4SjZaTp
This commit is contained in:
songyc macbook 2026-07-20 12:47:15 +09:00
parent 003859ee10
commit 6d6f9f08ad
2 changed files with 78 additions and 62 deletions

View File

@ -14,5 +14,10 @@
빌드 업로드 때마다 뜨는 규정 준수 질문을 생략한다 -->
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<!-- CFBundleName(맥 메뉴 막대 이름): 생성 Info.plist가 PRODUCT_NAME("Haru_Danim")으로
항상 덮어써 이 파일에 넣어도 무효(검증됨). 실제 표시는 언어별 InfoPlist.strings
(IOS/InfoPlist.xcstrings의 CFBundleName — ko 하루 다님 / en·ja Haru Danim)가 결정하고,
미지원 언어도 개발 언어(ko)로 폴백되므로 원시값이 노출될 일은 없다 -->
</dict>
</plist>

View File

@ -1,89 +1,100 @@
{
"sourceLanguage" : "ko",
"strings" : {
"CFBundleDisplayName" : {
"comment" : "홈 화면에 표시되는 앱 이름",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Haru Danim"
"sourceLanguage": "ko",
"strings": {
"CFBundleDisplayName": {
"comment": "홈 화면에 표시되는 앱 이름",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Haru Danim"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "Haru Danim"
"ja": {
"stringUnit": {
"state": "translated",
"value": "Haru Danim"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "하루 다님"
"ko": {
"stringUnit": {
"state": "translated",
"value": "하루 다님"
}
}
}
},
"CFBundleName" : {
"comment" : "Bundle name",
"extractionState" : "extracted_with_value",
"localizations" : {
"ko" : {
"stringUnit" : {
"state" : "new",
"value" : "Haru_Danim"
}
"CFBundleName": {
"comment": "Bundle name",
"extractionState": "extracted_with_value",
"localizations": {
"ko": {
"stringUnit": {
"state": "translated",
"value": "하루 다님"
}
},
"shouldTranslate" : false
},
"NSCalendarsFullAccessUsageDescription" : {
"comment" : "Privacy - Calendars Full Access Usage Description",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Needed to show your calendar events alongside the diary timetable."
"en": {
"stringUnit": {
"state": "translated",
"value": "Haru Danim"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "日記のタイムテーブルにカレンダーの予定を一緒に表示するために必要です。"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "일기 타임테이블에 캘린더 일정을 함께 표시하기 위해 필요해요."
"ja": {
"stringUnit": {
"state": "translated",
"value": "Haru Danim"
}
}
}
},
"NSPhotoLibraryAddUsageDescription" : {
"comment" : "이미지 내보내기 → 사진에 저장 권한 문구",
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Needed to save exported report images to your photo library."
"NSCalendarsFullAccessUsageDescription": {
"comment": "Privacy - Calendars Full Access Usage Description",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Needed to show your calendar events alongside the diary timetable."
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "書き出したレポート画像を写真アルバムに保存するために必要です。"
"ja": {
"stringUnit": {
"state": "translated",
"value": "日記のタイムテーブルにカレンダーの予定を一緒に表示するために必要です。"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "내보낸 리포트 이미지를 사진 앨범에 저장하기 위해 필요해요."
"ko": {
"stringUnit": {
"state": "translated",
"value": "일기 타임테이블에 캘린더 일정을 함께 표시하기 위해 필요해요."
}
}
}
},
"NSPhotoLibraryAddUsageDescription": {
"comment": "이미지 내보내기 → 사진에 저장 권한 문구",
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Needed to save exported report images to your photo library."
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "書き出したレポート画像を写真アルバムに保存するために必要です。"
}
},
"ko": {
"stringUnit": {
"state": "translated",
"value": "내보낸 리포트 이미지를 사진 앨범에 저장하기 위해 필요해요."
}
}
}
}
},
"version" : "1.0"
"version": "1.0"
}