Skip to content

Add complete English locale files matching Korean translations#92

Open
dioo1461 wants to merge 1 commit intofeature/group-join-requestfrom
codex/create-en-translation-file-for-ko-locale
Open

Add complete English locale files matching Korean translations#92
dioo1461 wants to merge 1 commit intofeature/group-join-requestfrom
codex/create-en-translation-file-for-ko-locale

Conversation

@dioo1461
Copy link
Copy Markdown
Collaborator

@dioo1461 dioo1461 commented Mar 6, 2026

Motivation

  • Provide a complete English translation set so en mirrors the existing ko namespaces for consistent i18n coverage across the app.
  • Ensure the app can switch locales without missing keys or runtime lookup errors by keeping key sets identical between ko and en.

Description

  • Added 29 new src/locales/en/*.json files and filled them with English translations corresponding to every src/locales/ko/*.json namespace.
  • Expanded existing src/locales/en/home.json and src/locales/en/tasks.json so their keys fully match the Korean sources.
  • Updated src/locales/en/index.ts to import all new English namespaces and register them in translationEN so the structure matches translationKO.

Testing

  • Ran a Node.js parity check script that compares file presence and key sets between src/locales/ko and src/locales/en using the script: node - <<'NODE' ... NODE, which reported locale keys match.
  • The parity check completed successfully with no missing files or key mismatches.

Codex Task

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the application's internationalization capabilities by completing the English translation set. The changes ensure that the English locale now fully mirrors the Korean locale, preventing any missing keys or runtime errors when users switch between languages. This provides a more robust and consistent user experience for English-speaking users.

Highlights

  • Comprehensive English Localization: Added 29 new English locale JSON files to provide complete translation coverage across various application features, mirroring the existing Korean namespaces.
  • Existing Locale File Expansion: Expanded src/locales/en/home.json and src/locales/en/tasks.json to include new keys, ensuring full parity with their Korean counterparts.
  • Locale Index Update: Updated src/locales/en/index.ts to import and register all newly added English namespaces, maintaining a consistent structure with the Korean translation index.
  • Translation Parity Verified: A Node.js script was run to confirm file presence and key set matching between ko and en locales, reporting successful parity.
Changelog
  • src/locales/en/components.json
    • Added English translations for UI components.
  • src/locales/en/createCategory.json
    • Added English translations for goal creation fields.
  • src/locales/en/createGroup.json
    • Added English translations for group creation forms and messages.
  • src/locales/en/createGroupCategory.json
    • Added English translation for the 'Create Group Goal' label.
  • src/locales/en/createGroupEntryCode.json
    • Added English translations for group invite code creation and related messages.
  • src/locales/en/editCategory.json
    • Added English translations for goal editing fields.
  • src/locales/en/editGroupCategory.json
    • Added English translation for the 'Edit Group Goal' label.
  • src/locales/en/editProfile.json
    • Added English translations for profile editing elements and messages.
  • src/locales/en/general.json
    • Added general English translations for common terms like 'public', 'private', days of the week, and action buttons.
  • src/locales/en/groupChat.json
    • Added English translations for group chat input and member list.
  • src/locales/en/groupDetail.json
    • Added English translations for group detail screens, including settings, rankings, and join requests.
  • src/locales/en/groupEntryCodeSubmit.json
    • Added English translations for submitting group invite codes.
  • src/locales/en/groupRanking.json
    • Added English translations for group ranking display, including daily, weekly, and monthly views.
  • src/locales/en/groupSearch.json
    • Added English translations for group search functionality and results.
  • src/locales/en/groupSetting.json
    • Added English translations for various group settings and management options.
  • src/locales/en/groups.json
    • Added English translations for the groups overview, including joined groups and group creation prompts.
  • src/locales/en/home.json
    • Updated existing English translations and added new keys for the home screen, including study status and goal management.
  • src/locales/en/index.ts
    • Updated to import and export all new English locale JSON files, integrating them into the main translation object.
  • src/locales/en/login.json
    • Added English translations for the login screen, including input fields and error messages.
  • src/locales/en/manageCategory.json
    • Added English translations for managing personal and group goals, including deletion alerts.
  • src/locales/en/pendingGroupJoinRequest.json
    • Added English translation for the 'Pending Group Join Requests' label.
  • src/locales/en/settings.json
    • Added English translations for the settings menu, covering profile, account, device, and service information.
  • src/locales/en/signUpAccount.json
    • Added English translations for the account sign-up process, including validation messages.
  • src/locales/en/signUpAccountComplete.json
    • Added English translations for the account sign-up completion screen.
  • src/locales/en/signUpBirthDate.json
    • Added English translations for the birth date input step during sign-up.
  • src/locales/en/signUpPosition.json
    • Added English translations for the position/job input step during sign-up.
  • src/locales/en/signUpProfileComplete.json
    • Added English translations for the profile sign-up completion screen.
  • src/locales/en/signUpProfileImage.json
    • Added English translations for the profile image upload step during sign-up.
  • src/locales/en/stats.json
    • Added English translations for statistics display, including date headers and total study time.
  • src/locales/en/tasks.json
    • Updated existing English translations and added new keys for the tasks screen, including today's goals and routine management.
  • src/locales/en/unit.json
    • Added English translation for the unit 'person'.
Activity
  • The pull request introduces a substantial number of new English locale files, indicating a major effort to complete internationalization.
  • Existing English locale files for 'home' and 'tasks' were updated to align with new features or expanded content.
  • The index.ts file was modified to ensure all new locale files are correctly imported and registered, maintaining the application's translation structure.
  • A Node.js script was utilized to verify the consistency of locale keys between Korean and English, confirming successful parity.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request does a great job of adding comprehensive English translations to match the Korean ones. My review focuses on improving consistency in localization key naming conventions, enhancing maintainability of the index file, and correcting a potential pluralization issue. I've identified a few areas where key naming is inconsistent across related files (e.g., camelCase vs. kebab-case). Adopting a single convention will make the keys easier to manage. Additionally, I've suggested sorting the namespaces in index.ts for better readability and proposed a fix for pluralization in unit.json to ensure grammatical correctness.

@@ -0,0 +1,3 @@
{
"person": "people"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The current mapping "person": "people" doesn't handle singular vs. plural forms correctly. This will result in grammatically incorrect text like "1 people". i18next has built-in support for pluralization that should be used here.

After this change, you'll need to update the call site to use t('unit.person', { count: ... }), and i18next will automatically select the correct singular or plural form.

  "person_one": "person",
  "person_other": "people"

Comment on lines +2 to +11
"createGoal": "Create Goal",
"goalName": "Goal name",
"goalNameHint": "Please enter the name of the goal you want to create",
"goalDescription": "Goal description",
"goalDescriptionHint": "Please enter a description of the goal",
"goalTimeLabel": "Goal time",
"goalTimeHint": "Please enter the daily goal time for the new goal",
"selectDayBelong": "Select days",
"selectDayBelongHint": "Please select the days to work on this goal",
"goalTimeValue": "{{hours}}h {{minutes}}min"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The keys in this file use camelCase (e.g., createGoal, goalName), while most other new locale files, including related ones for goals (manageCategory.json, editCategory.json), use kebab-case. To ensure consistency across localization files, it's recommended to use kebab-case for all keys.

Note that this is a breaking change and will require updating all usages in the codebase (e.g., t('createGoal.goalName') would need to be changed to t('createGoal.goal-name')).

Suggested change
"createGoal": "Create Goal",
"goalName": "Goal name",
"goalNameHint": "Please enter the name of the goal you want to create",
"goalDescription": "Goal description",
"goalDescriptionHint": "Please enter a description of the goal",
"goalTimeLabel": "Goal time",
"goalTimeHint": "Please enter the daily goal time for the new goal",
"selectDayBelong": "Select days",
"selectDayBelongHint": "Please select the days to work on this goal",
"goalTimeValue": "{{hours}}h {{minutes}}min"
"create-goal": "Create Goal",
"goal-name": "Goal name",
"goal-name-hint": "Please enter the name of the goal you want to create",
"goal-description": "Goal description",
"goal-description-hint": "Please enter a description of the goal",
"goal-time-label": "Goal time",
"goal-time-hint": "Please enter the daily goal time for the new goal",
"select-day-belong": "Select days",
"select-day-belong-hint": "Please select the days to work on this goal",
"goal-time-value": "{{hours}}h {{minutes}}min"

"leftTimeToAchieveGoal": "{{time}} left to hit your goal time",
"studyingWithPetName": "Studying with {{petName}}",
"studying": "in progress...",
"today-goal-complete": "Goal time achieved!"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

This file mostly uses camelCase for keys, but today-goal-complete uses kebab-case. For consistency within this file, it's better to use camelCase.

This change will require updating its usage in the code from t('home.today-goal-complete') to t('home.todayGoalComplete').

Suggested change
"today-goal-complete": "Goal time achieved!"
"todayGoalComplete": "Goal time achieved!"

Comment on lines 32 to 63
const translationEN = {
tasks: tasksEN,
home: homeEN,
settings: settingsEN,
signUp: signUpAccountEN,
general: generalEN,
createGoal: createCategoryEN,
groups: groupsEN,
groupDetail: groupDetailEN,
unit: unitEN,
groupSearch: groupSearchEN,
groupEntryCodeSubmit: groupEntryCodeSubmitEN,
groupSetting: groupSettingEN,
groupRanking: groupRankingEN,
groupChat: groupChatEN,
stats: statsEN,
manageCategory: manageCategoryEN,
editCategory: editCategoryEN,
signUpBirthDate: signUpBirthDateEN,
signUpPosition: signUpPositionEN,
signUpProfileImage: signUpProfileImageEN,
signUpProfileComplete: signUpProfileCompleteEN,
signUpAccountComplete: signUpAccountCompleteEN,
createGroupEntryCode: createGroupEntryCodeEN,
login: loginEN,
createGroup: createGroupEN,
editProfile: editProfileEN,
components: componentsEN,
createGroupCategory: createGroupCategoryEN,
editGroupCategory: editGroupCategoryEN,
pendingGroupJoinRequest: pendingGroupJoinRequestEN,
};
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The properties in the translationEN object are not alphabetically sorted. Sorting them makes the code more readable and helps developers find namespaces more easily as the project grows.

const translationEN = {
  components: componentsEN,
  createGoal: createCategoryEN,
  createGroup: createGroupEN,
  createGroupCategory: createGroupCategoryEN,
  createGroupEntryCode: createGroupEntryCodeEN,
  editCategory: editCategoryEN,
  editGroupCategory: editGroupCategoryEN,
  editProfile: editProfileEN,
  general: generalEN,
  groupChat: groupChatEN,
  groupDetail: groupDetailEN,
  groupEntryCodeSubmit: groupEntryCodeSubmitEN,
  groupRanking: groupRankingEN,
  groupSearch: groupSearchEN,
  groupSetting: groupSettingEN,
  groups: groupsEN,
  home: homeEN,
  login: loginEN,
  manageCategory: manageCategoryEN,
  pendingGroupJoinRequest: pendingGroupJoinRequestEN,
  settings: settingsEN,
  signUp: signUpAccountEN,
  signUpAccountComplete: signUpAccountCompleteEN,
  signUpBirthDate: signUpBirthDateEN,
  signUpPosition: signUpPositionEN,
  signUpProfileComplete: signUpProfileCompleteEN,
  signUpProfileImage: signUpProfileImageEN,
  stats: statsEN,
  tasks: tasksEN,
  unit: unitEN,
};

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant