Skip to content

Conversation

@geeksbaek
Copy link
Collaborator

@geeksbaek geeksbaek commented Dec 31, 2025

Summary

  • Localizable.strings 파일의 킀값듀을 snake_case μ†Œλ¬Έμžλ‘œ 톡일
  • μƒ˜ν”Œλ‘œ 20개 킀값을 λ³€ν™˜ν•˜μ—¬ νŒ¨ν„΄ 적용
  • ν•΄λ‹Ή ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” Swift μ½”λ“œλ„ ν•¨κ»˜ μˆ˜μ •

λ³€ν™˜λœ ν‚€κ°’ λͺ©λ‘

κΈ°μ‘΄ ν‚€κ°’ λ³€ν™˜ ν›„
Dashboard dashboard
Catalog catalog
Collection collection
Cancel cancel
Setting setting
Edit edit
Reset reset
Preferences preferences
North north
South south
About about
Version version
Fishes fishes
Sea Creatures sea_creatures
Bugs bugs
Fossils fossils
Art art
All all
Name name
Personality personality
Gender gender

μˆ˜μ •λœ 파일

  • ko.lproj/Localizable.strings - ν•œκ΅­μ–΄ λ¬Έμžμ—΄
  • en.lproj/Localizable.strings - μ˜μ–΄ λ¬Έμžμ—΄
  • Swift μ½”λ“œ 파일 12개 (.localized 호좜 λΆ€λΆ„)

Test plan

  • μ•± λΉŒλ“œ 확인
  • 각 ν™”λ©΄μ—μ„œ λ‹€κ΅­μ–΄ λ¬Έμžμ—΄μ΄ μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œλ˜λŠ”μ§€ 확인
  • ν•œκ΅­μ–΄/μ˜μ–΄ μ–Έμ–΄ μ „ν™˜ ν…ŒμŠ€νŠΈ

Closes #70

πŸ€– Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes

    • Fixed translation errors in Korean localization, including time formatting corrections and language descriptions
    • Corrected spelling inconsistencies in translations
    • Resolved duplicate localization entries
  • Localization & Internationalization

    • Standardized localization key naming conventions for improved consistency across the app
    • Enhanced translation accuracy and expanded localization coverage
    • Improved overall localization infrastructure stability

✏️ Tip: You can customize this high-level summary in your review settings.

Localizable.strings 파일의 킀값듀을 snake_case μ†Œλ¬Έμžλ‘œ 톡일

λ³€ν™˜λœ ν‚€κ°’ (μƒ˜ν”Œ 20개):
- Dashboard β†’ dashboard
- Catalog β†’ catalog
- Collection β†’ collection
- Cancel β†’ cancel
- Setting β†’ setting
- Edit β†’ edit
- Reset β†’ reset
- Preferences β†’ preferences
- North β†’ north
- South β†’ south
- About β†’ about
- Version β†’ version
- Fishes β†’ fishes
- Sea Creatures β†’ sea_creatures
- Bugs β†’ bugs
- Fossils β†’ fossils
- Art β†’ art
- All β†’ all
- Name β†’ name
- Personality β†’ personality
- Gender β†’ gender

πŸ€– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Dec 31, 2025

πŸ“ Walkthrough

Walkthrough

The PR systematically converts localization string keys from Title Case to lowercase or snake_case conventions across English and Korean resource files, and updates all corresponding Swift source code to reference these new lowercase keys, ensuring consistent naming throughout the application.

Changes

Cohort / File(s) Summary
Localization Files
Animal-Crossing-Wiki/Projects/App/Resources/en.lproj/Localizable.strings, ko.lproj/Localizable.strings
Extensive key renames from Title Case (e.g., Dashboard, Catalog, Cancel) to lowercase or snake_case (e.g., dashboard, catalog, cancel). Includes fixes for typos (fesk β†’ Desk), duplicates marked with comments, and new lowercase key entries (e.g., to_catch_now, currently_available, search, all, month, name).
App Navigation
AppCoordinator.swift
Tab view controller titles updated to use lowercase localization keys: Dashboard β†’ dashboard, Catalog β†’ catalog, Collection β†’ collection.
Alert Actions
Extension/UI/UIViewController+extension.swift
Button titles in alert actions changed from Cancel / OK to cancel / ok localization keys.
Dashboard Views & Controllers
Presentation/Dashboard/ViewControllers/AboutViewController.swift, PreferencesViewController.swift
Presentation/Dashboard/ViewModels/AboutReactor.swift
Presentation/Dashboard/Views/NpcsView.swift, TodaysTasksView.swift, VillagersView.swift
Navigation titles and button labels updated to lowercase keys: About β†’ about, Preferences β†’ preferences, Version β†’ version, Reset β†’ reset, Edit β†’ edit.
Catalog & Collection
Presentation/Catalog/ViewControllers/ItemsViewController.swift
Presentation/Collection/ViewControllers/CollectionViewController.swift
Menu and filter titles converted to lowercase: All β†’ all, Month β†’ month, Name β†’ name, Reset β†’ reset. Search placeholder updated to search. Filter keywords changed: To catch now β†’ to_catch_now, Currently Available β†’ currently_available. Collection title key Collection β†’ collection.
Detail Views
Presentation/Animals/Views/NPCDetailView.swift, VillagerDetailView.swift
Localized titles for gender and personality attributes changed from Gender / Personality to gender / personality keys.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 Keys in lowercase, aligned just right,
From Title to snake_case in sight!
Consistency reigns through every string,
Localization flows with a cleaner wing. ✨
A rabbit cheers for standards so keen! 🌿

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
βœ… Passed checks (4 passed)
Check name Status Explanation
Title check βœ… Passed The title accurately describes the main objective: localizing string keys to lowercase, though written in Korean.
Description check βœ… Passed The description provides a clear summary, conversion table, modified files list, and test plan, following the template structure with all key information.
Linked Issues check βœ… Passed The PR successfully converts 20+ localization keys from mixed-case to lowercase and updates all corresponding Swift code references, meeting issue #70's primary objective.
Out of Scope Changes check βœ… Passed All changes are directly scoped to the localization refactoring objective: key renames in Localizable.strings files and corresponding Swift code updates.
✨ Finishing touches
  • πŸ“ Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

beans-go and others added 2 commits January 1, 2026 07:16
- Localizable.strings ν‚€κ°’ 정리
- UIViewController+extension κ°œμ„ 
- ItemsViewController λ‹€κ΅­μ–΄ 처리 κ°œμ„ 

πŸ€– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Catalog, Collection, Personality, Gender 쀑볡 ν‚€ 제거
- λŒ€μ†Œλ¬Έμžλ§Œ λ‹€λ₯Έ 쀑볡 ν‚€κ°€ Tuistμ—μ„œ 좩돌 λ°œμƒ

πŸ€– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
Animal-Crossing-Wiki/Projects/App/Resources/en.lproj/Localizable.strings (1)

1-1519: Korean localization file must be updated with matching key changes.

The Korean localization file (ko.lproj/Localizable.strings) has not been updated with the key changes made in the English file. Key mismatches detected:

  • Missing from Korean: "Apple", "Birthday", "Cherry", "Jack", "Orange", "Peach", "Pear", "Tom Nook", "neta" (11 keys with casing differences)
  • Extra in Korean: "apple", "cherry", "orange", "peach", "pear" (lowercase variants), plus "All villagers", "Find peral", "Fishing", "Isabelle", "Island", "Jingle", "Snowboy", "Pascal", "Pattern", "Whether to buy"

The Korean file has 1394 keys vs. English's 1385 keys. When the app runs in Korean locale, it will fail to load these localized strings, causing missing translations or runtime errors. Update the Korean file to match all key changes made in the English file, and fix the typo "Find peral" β†’ "Find pearl".

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/ViewControllers/ItemsViewController.swift (1)

58-71: Fix SearchScope enum localization key case mismatch.

The SearchScope enum raw value "All" doesn't match the localization file key "all" (lowercase). The transform function will fail to localize this value at runtime. Update the enum to use lowercase "all" to match the existing localization key:

enum SearchScope: String, CaseIterable {
    case all = "all"
    case notCollected = "Not collected"
    case collected = "Collected"
    // ...
}

The keys "Collected" and "Not collected" match correctly and don't need changes.

🧹 Nitpick comments (1)
Animal-Crossing-Wiki/Projects/App/Resources/en.lproj/Localizable.strings (1)

74-74: Consider fixing the typo in the key name.

The value correctly fixes the typo ("villager"), but the key still contains the typo: "Obtain DIY from vilager". While keys are internal identifiers, consistent spelling improves maintainability.

Consider renaming the key in a follow-up:

-"Obtain DIY from vilager" = "Obtain DIY from villager";
+"Obtain DIY from villager" = "Obtain DIY from villager";

Don't forget to update the corresponding Swift code reference.

πŸ“œ Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 185dea2 and 0c25c45.

πŸ“’ Files selected for processing (14)
  • Animal-Crossing-Wiki/Projects/App/Resources/en.lproj/Localizable.strings
  • Animal-Crossing-Wiki/Projects/App/Resources/ko.lproj/Localizable.strings
  • Animal-Crossing-Wiki/Projects/App/Sources/AppCoordinator.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Extension/UI/UIViewController+extension.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/Views/NPCDetailView.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/Views/VillagerDetailView.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/ViewControllers/ItemsViewController.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Collection/ViewControllers/CollectionViewController.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/AboutViewController.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/PreferencesViewController.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewModels/AboutReactor.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/NpcsView.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/TodaysTasksView.swift
  • Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/VillagersView.swift
🧰 Additional context used
🧬 Code graph analysis (5)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/Views/NPCDetailView.swift (2)
Animal-Crossing-Wiki/Projects/App/Sources/Models/NPC.swift (1)
  • name (10-28)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/ViewControllers/NPCViewController.swift (1)
  • transform (17-23)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/VillagersView.swift (2)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/AppSettingView.swift (1)
  • configure (33-48)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/shared/EmptyView.swift (1)
  • editLabel (56-59)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/PreferencesViewController.swift (3)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/Views/KeywordCell.swift (1)
  • setUp (34-36)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Collection/ViewControllers/CollectionProgressViewController.swift (1)
  • setUpNavigationItem (40-42)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/PreferencesView.swift (1)
  • updateHemisphere (141-143)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Collection/ViewControllers/CollectionViewController.swift (3)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Collection/ViewControllers/CollectionProgressViewController.swift (1)
  • setUpNavigationItem (40-42)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/DashboardViewController.swift (1)
  • updateDate (56-58)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/ViewControllers/VillagersViewController.swift (1)
  • setUpNavigationItem (200-211)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/ViewControllers/ItemsViewController.swift (3)
Animal-Crossing-Wiki/Projects/App/Sources/Utility/Items.swift (1)
  • reset (420-431)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/Views/KeywordCell.swift (1)
  • setUp (34-36)
Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/ViewControllers/NPCViewController.swift (1)
  • transform (17-23)
πŸ”‡ Additional comments (26)
Animal-Crossing-Wiki/Projects/App/Resources/ko.lproj/Localizable.strings (4)

10-19: LGTM! Tab bar and common UI keys properly unified to lowercase.

Keys like dashboard, catalog, collection, cancel, ok, setting are now consistently lowercase, aligning with the PR objective.


265-265: Good catch: Bug fix for time translation.

The translation for "11 PM – 8 AM" was incorrectly "μ˜€ν›„ 11μ‹œ – μ˜€ν›„ 8μ‹œ" (PM to PM). This correctly fixes it to "μ˜€ν›„ 11μ‹œ – μ˜€μ „ 8μ‹œ" (PM to AM).


38-42: Lowercase keys for edit/reset with appropriate duplicate prevention comments.

The comment on line 42 noting that "reset" is already defined above helps prevent duplicate key conflicts in Tuist builds.


130-134: Category and filter keys consistently updated to lowercase/snake_case.

Keys like fishes, sea_creatures, bugs, fossils, art, to_catch_now, currently_available, search, all, month, name, personality, gender follow the new convention.

Also applies to: 163-168, 291-293

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/PreferencesViewController.swift (1)

40-40: LGTM! Navigation title uses lowercase localization key.

The change from "Preferences".localized to "preferences".localized aligns with the project-wide lowercase key convention.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewControllers/AboutViewController.swift (1)

38-38: LGTM! Navigation title updated to lowercase key.

Consistent with the project-wide localization key standardization.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/VillagersView.swift (1)

43-53: LGTM! Reset button uses lowercase localization key.

The change to "reset".localized is consistent with the standardization effort across the codebase.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/NpcsView.swift (1)

43-53: LGTM! Reset button uses lowercase localization key.

Consistent with the same change in VillagersView.swift.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/ViewModels/AboutReactor.swift (1)

21-27: LGTM! Section title uses lowercase localization key.

The "version".localized change maintains consistency with the project-wide localization key standardization.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Dashboard/Views/TodaysTasksView.swift (1)

36-46: LGTM! Edit and reset buttons use lowercase localization keys.

Both "edit".localized and "reset".localized are consistent with the project-wide standardization to lowercase keys.

Animal-Crossing-Wiki/Projects/App/Sources/Extension/UI/UIViewController+extension.swift (2)

30-30: LGTM! Alert button titles updated to lowercase keys.

The cancel button now uses the lowercase localization key "cancel", aligning with the project's new convention.


57-64: LGTM! Alert action titles standardized to lowercase.

Both alert actions now use lowercase localization keys ("cancel" and "ok"), consistent with the PR's standardization effort. These keys exist in all localization files (English and Korean).

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/Views/VillagerDetailView.swift (1)

56-57: LGTM! Item title keys updated to lowercase.

The "personality" and "gender" keys now follow the lowercase convention. Note that other item titles ("Hobby", "Birthday", etc.) remain in Title Case, which is expected given this PR's incremental migration strategy. The .capitalized calls ensure proper display formatting is preserved.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Animals/Views/NPCDetailView.swift (1)

56-56: LGTM! Gender title key updated to lowercase.

The "gender" localization key now follows the lowercase convention, consistent with the parallel change in VillagerDetailView.swift. The .capitalized transformation ensures proper display formatting.

Animal-Crossing-Wiki/Projects/App/Sources/AppCoordinator.swift (3)

32-32: LGTM! Dashboard tab title key updated to lowercase.

The dashboard tab now uses the lowercase localization key "dashboard", consistent with the standardization effort.


38-38: LGTM! Catalog tab title key updated to lowercase.

The catalog tab now uses the lowercase localization key "catalog", aligning with the new convention.


49-49: All tab bar title keys are properly localized in lowercase. All four keys ("dashboard", "catalog", "animals", "collection") exist in the localization files and are correctly referenced in the code.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Collection/ViewControllers/CollectionViewController.swift (1)

47-47: Localization key "collection" verified in both en.lproj and ko.lproj files.

The lowercase key "collection" exists in both English ("collection" = "Collection";) and Korean ("collection" = "μˆ˜μ§‘ν’ˆ";) localization files, confirming the standardization is complete and properly localized.

Animal-Crossing-Wiki/Projects/App/Sources/Presentation/Catalog/ViewControllers/ItemsViewController.swift (3)

102-102: LGTM!

The search placeholder correctly uses the lowercase key "search" which maps to "Search..." in the localization file.


246-258: Navigation title keys are correctly implemented with consistent localization.

The new lowercase keys "to_catch_now" and "currently_available" are properly defined in Localizable.strings (lines 160-161) and correctly used in ItemsViewController.swift (lines 252, 255). No old Title Case key references remain in the codebase, confirming the migration is complete and consistent.


29-56: All localization keys referenced in the Menu enum ("all", "month", "name", "Sell", "All Select", "reset") are present in both English and Korean localization files. There is no runtime risk from the key naming inconsistency.

Likely an incorrect or invalid review comment.

Animal-Crossing-Wiki/Projects/App/Resources/en.lproj/Localizable.strings (5)

9-14: LGTM!

Tab bar title keys correctly converted to lowercase ("dashboard", "catalog", "collection"). The remaining keys ("villagers", "animals") appear to already be lowercase.


16-20: LGTM!

Generic keys properly converted to lowercase ("cancel", "ok", "setting") while preserving proper capitalization in the display values.


671-680: LGTM!

Housewares tag keys correctly follow the lowercase convention with proper capitalization preserved in display values.


160-169: Verify unconverted keys match Swift code usage.

ItemsViewController keys are partially converted. Lines 166-169 retain Title Case for "Sell", "All Select", "Collected", and "Not collected". The Swift code (ItemsViewController.swift lines 34-35, 50-51) actively references these Title Case keys ("Sell" and "All Select"), confirming the partial conversion is necessary and correct. Ensure consistent conversion approach in follow-up PRs.


38-43: Duplicate key consolidation is correct and all call sites properly reference consolidated keys.

Each localized string key ("reset", "edit", "Today's Tasks", "Collection Progress") is defined once in the strings file. Swift code across VillagersView, TodaysTasksView, NpcsView, TaskEditViewController, DashboardViewController, CollectionProgressViewController, and ItemsViewController all correctly reference these consolidated keys. No broken references detected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[λ‹€κ΅­μ–΄ λŒ€μ‘] λ‹€κ΅­μ–΄ λ¬Έμžμ—΄ 킀값을 λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ λŒ€μ‘

2 participants