Skip to content

[FIX] 팀 이름 글자수 검증 에러 해결 및 자동화 범위 이외의 상수 및 데이터 번역 작업 추가#429

Open
useon wants to merge 21 commits intodevelopfrom
fix/#416
Open

[FIX] 팀 이름 글자수 검증 에러 해결 및 자동화 범위 이외의 상수 및 데이터 번역 작업 추가#429
useon wants to merge 21 commits intodevelopfrom
fix/#416

Conversation

@useon
Copy link
Contributor

@useon useon commented Mar 3, 2026

🚩 연관 이슈

closed #416

📝 작업 내용

상수나 데이터를 ui에 사용하는 경우 번역이 되지 않는 문제

image 예를 들어 위와 같이 사용자 입력으로 데이터가 저장되거나 입력이 없는 경우 기본값을 사용할 수 있는 경우를 말합니다. 하드코딩된 문자열은 자동화를 통해 자동 매핑되지만 이외에도 서비스 특성상 기본 템플릿이 제공이 되기 때문에 **상수나 데이터를 그대로 UI에 반영하는 경우 번역이 되지 않는 문제들을 해결**했습니다.
  1. 기본템플릿의 버전을 다르게 제공하는 방법과 2) 번역키가 있는 경우 대응되도록 기본 템플릿에 있는 한글 문자열을 키로 추가하는 방법 중 기본 템플릿에 있는 한글 문자열을 키로 추가하는 방법으로 해결했습니다.

이유는 현재 헤더가 있는 모든 페이지에서 실시간으로 언어를 설정해서 바꿀 수 있고 한번 시작한 토론에서 또 언어에 따라 기본 템플릿을 언어에 따라 갈아끼워야 하는 것보다 기본템플릿은 한글 하나로 두고 키를 매핑하여 키가 존재하는 경우 번역이 이루어지도록 만들었습니다. (키가 존재하지 않는 경우는 사용자 입력인 경우인데 이때는 사용자 입력대로 보여집니다.)

영어 시간표를 생성할 경우 default 팀이름이 글자수 검증 규칙을 초과하여 400에러 발생

문제의 원인은 8자로 설정되어 있는 팀 이름의 글자수 규칙이 영어로 변환되었을 때 11자를 넘는 경우가 생겨(찬성 -> Affirmative) 에러가 발생했습니다.
이에 백엔드와 합의하여 팀 이름의 글자수에 대해 15자로 수정하여 해결했습니다!

참고로..

현재 이미 한글 또는 영어로 생성된 시간표에 한해서는 설정된 당시의 시간표로 저장이 됩니다..!

image

따라서 설정이 영어로 되어 있다고 해도 한글로 생성된 시간표가 영어로 보이지는 않습니다.

영어 시간표를 생성하고 진행하는 유저가 서비스 언어를 한글로 설정을 해서 사용하거나, 한글 시간표를 생성하고 토론을 진행하는 유저가 서비스 언어를 영어로 설정하고 진행하는 경우는 드물다고 생각했기 때문입니다.
또한 서비스 특성상 사용자 입력이 들어가고, 하나의 언어로 함께 합의를 하고 토론을 진행하는 것이라 생각했기에 정보성 글을 전달하는 블로그 글이나 소개 사이트와는 다르게 현재의 구현이 적합하다고 판단했습니다.

🏞️ 스크린샷 (선택)

image image image image image

🗣️ 리뷰 요구사항 (선택)

진짜 다국어화 하면서 책을 5번 이상 읽으며 교정한다는 출판사 편집자의 심정을 이해하게 되었습니다........
진짜 누락 번역 작업이 저랑 숀이랑 확인을 하고 올려도 콜리에게 또 발견이 되는 .. ㅎ .. 🤣 !!!
비토가 만들어주신🙇‍♀️ 프리뷰를 보시고 혹시나 번역이 누락된 부분은 없는지 살펴봐 주시면 감사하겠습니다 !!

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • "나의 토론 주제"와 "나의 시간표" 항목 추가
  • 개선사항

    • UI 용어 통일: "Schedule" → "Timetable" 전면 반영
    • 팀명 입력 제한 확대: 8자 → 15자
    • 타이머 표시 간소화: "{{minutes}}분 {{seconds}}초" → "{{minutes}}m {{seconds}}s"
    • 번호 라벨 추가/표준화: "1번/2번/3번" → "No.1/No.2/No.3"
    • 자리표시자·버튼·헤더 문구 일관성 및 번역 적용, 일부 레이아웃·스타일 조정

@useon useon requested a review from i-meant-to-be March 3, 2026 10:07
@useon useon self-assigned this Mar 3, 2026
@useon useon added the fix 버그 수정 label Mar 3, 2026
@gemini-code-assist
Copy link

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!

이 Pull Request는 사용자 인터페이스에서 번역이 누락되거나 일관성이 부족했던 문제와 팀 이름 글자수 제한으로 인해 발생하던 에러를 해결합니다. UI에 표시되는 동적인 데이터와 상수에 대한 번역을 강화하고, 팀 이름의 최대 길이를 늘려 다국어 환경에서의 안정성을 높였습니다. 전반적으로 사용자 경험을 개선하고 다국어 지원을 더욱 견고하게 만드는 데 중점을 두었습니다.

Highlights

  • 번역 누락 및 일관성 개선: UI에 직접 사용되는 상수 및 데이터가 번역되지 않던 문제를 해결했습니다. 기본 템플릿의 한글 문자열을 번역 키로 추가하여, 키가 존재하는 경우 번역이 이루어지도록 개선했습니다. 또한, 영어 번역에서 'schedule'을 'timetable'로 변경하는 등 용어의 일관성을 확보했습니다.
  • 팀 이름 글자수 검증 규칙 완화: 기존 8자로 설정되어 있던 팀 이름의 글자수 제한이 영어 번역 시 초과되어 400 에러가 발생하던 문제를 해결하기 위해, 백엔드와 협의하여 팀 이름의 최대 글자수를 15자로 확장했습니다.
  • 번역 키 추가 및 기존 번역 수정: 새로운 번역 키('1번', '2번', '3번', '나의 토론 주제', '나의 시간표')를 추가하고, 기존 번역 중 '직접 입력'을 '직접입력'으로 통일하는 등 일부 오탈자를 수정했습니다.
Changelog
  • public/locales/en/translation.json
    • Updated 'schedule' to 'timetable' in multiple entries for consistency.
    • Shortened 'Previous turn' to 'Previous' and 'Next turn' to 'Next'.
    • Modified time format from 'min sec' to 'm s'.
    • Added new translation keys for 'No.1', 'No.2', 'No.3', 'My Debate Topic', and 'My Timetable'.
    • Corrected the translation for 'Custom' in a specific context.
  • public/locales/ko/translation.json
    • Added new translation keys for '1번', '2번', '3번', '나의 토론 주제', and '나의 시간표'.
    • Corrected '직접 입력' to '직접입력' in several entries.
    • Updated the team name character limit message from 8 to 15 characters.
  • src/components/HeaderTableInfo/HeaderTableInfo.tsx
    • Removed the useTranslation hook and related displayName logic.
    • Added an emptyText prop to handle empty names.
  • src/components/HeaderTitle/HeaderTitle.tsx
    • Removed the useTranslation hook and related displayTitle logic.
    • Added an emptyText prop to handle empty titles.
  • src/hooks/useFullscreen.ts
    • Corrected a comment from '값을 직접 입력하는 함수' to '값을 직접입력하는 함수'.
  • src/page/TableComposition/components/TableNameAndType/TableNameAndType.tsx
    • Applied the t() function to info.name, info.agenda, info.prosTeamName, info.consTeamName, and StanceToString placeholders for translation.
    • Updated the team name character limit validation from 8 to 15 characters.
  • src/page/TableComposition/components/TimeBox/TimeBox.tsx
    • Applied the t() function to the speaker variable within the translation string.
  • src/page/TableComposition/components/TimeBoxStep/TimeBoxStep.tsx
    • Applied the t() function to initData.info.name, initData.info.agenda, initData.info.prosTeamName, and initData.info.consTeamName for display.
    • Implemented conditional rendering for empty names and titles, displaying default translated strings.
  • src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx
    • Applied the t() function to prosTeamName and consTeamName in stanceOptions.
    • Corrected '직접 입력' to '직접입력' in comments and alert messages.
    • Applied the t() function to the speaker input value.
  • src/page/TableOverviewPage/TableOverviewPage.tsx
    • Applied the t() function to data.info.name, data.info.agenda, data.info.prosTeamName, and data.info.consTeamName for display.
    • Implemented conditional rendering for empty names and titles, displaying default translated strings.
  • src/page/TimerPage/TimerPage.tsx
    • Applied the t() function to data.info.name and data.info.agenda for display.
  • src/page/TimerPage/components/NormalTimer.tsx
    • Applied the t() function to teamName and item.speaker within translation strings.
  • src/page/TimerPage/components/TimeBasedTimer.tsx
    • Applied the t() function to teamName for display.
  • src/util/speechType.ts
    • Corrected the CUSTOM speech type value from '직접 입력' to '직접입력'.
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.

@coderabbitai
Copy link

coderabbitai bot commented Mar 3, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bec0e658-3c61-4e94-808c-69d6d8855323

📥 Commits

Reviewing files that changed from the base of the PR and between 6f3b798 and 765a7ac.

📒 Files selected for processing (3)
  • public/locales/en/translation.json
  • src/components/HeaderTableInfo/HeaderTableInfo.tsx
  • src/components/HeaderTitle/HeaderTitle.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/components/HeaderTitle/HeaderTitle.tsx
  • src/components/HeaderTableInfo/HeaderTableInfo.tsx

Walkthrough

UI 텍스트를 광범위하게 i18n(t())로 감싸고 영어 번역 파일에서 “schedule”→“timetable” 용어 전환을 적용했으며, 팀명 최대 길이를 8자에서 15자로 확대하고 "직접 입력""직접입력"으로 정규화했습니다. 일부 헤더 컴포넌트의 번역 의존성 제거 및 레이아웃 소폭 조정도 포함됩니다.

Changes

Cohort / File(s) Summary
Translation Files
public/locales/en/translation.json, public/locales/ko/translation.json
영어·한국어 번역 업데이트: scheduletimetable 용어 변경, 1번/2번/3번 라벨 추가, 나의 토론 주제·나의 시간표 키 추가, 타이머 문구·포맷 수정, 직접 입력직접입력 정규화, 팀명 길이 안내문 수정(8→15).
Header Components
src/components/HeaderTableInfo/HeaderTableInfo.tsx, src/components/HeaderTitle/HeaderTitle.tsx
로컬 렌더링으로 변경: 일부 컴포넌트에서 useTranslation/t() 기반 폴백 제거하고 프로퍼티(raw name/title)를 직접 렌더링하도록 변경(로딩 스켈레톤 분기 유지).
Table Composition
src/page/TableComposition/components/...
.../TableNameAndType.tsx, .../TimeBox.tsx, .../TimeBoxStep.tsx, .../TimerCreationContent.tsx
입력값·플레이스홀더·발언자·팀명에 t() 적용하여 번역 적용, 팀명 최대 길이 검증 8→15자로 변경, 직접입력 키 반영 및 빈값에 번역된 플레이스홀더 사용.
Timer Pages & Components
src/page/TimerPage/TimerPage.tsx, src/page/TimerPage/components/NormalTimer.tsx, .../TimeBasedTimer.tsx
화면에 표시되는 테이블 이름/주제/팀명/발언자를 t()로 감싸 번역 적용, 일부 레이아웃(패널 너비·truncation) 소폭 조정.
Overview Page
src/page/TableOverviewPage/TableOverviewPage.tsx
HeaderTableInfo/HeaderTitle 렌더링을 데이터 존재 가드로 보호하고, 빈값 트림 후 번역된 플레이스홀더로 대체; 팀명 전달 시 t() 적용.
Utilities & Hooks
src/util/speechType.ts, src/hooks/useFullscreen.ts
SPEECH_TYPE_RECORD[CUSTOM] 레이블을 직접입력으로 변경; useFullscreen 주석 텍스트 오타/형식 수정(로직 변화 없음).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • jaeml06
  • i-meant-to-be

Poem

🐰 풀밭에서 폴짝, 문자열을 모아왔네.
단어들은 정리되어 새 이름을 얻고,
여덟 글자였던 팀명은 열다섯으로 넓어졌네.
붙임새 좋은 '직접입력'은 깔끔한 모자와 같이,
토끼는 춤추며 외치네 — 타임테이블 만세! 🥕✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ 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%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 팀 이름 글자수 검증 에러 해결과 상수/데이터 번역 작업을 명확히 설명하며, 변경 사항의 핵심을 정확히 반영합니다.
Linked Issues check ✅ Passed PR은 #416의 모든 주요 요구사항을 충족합니다: (1) 상수와 템플릿 데이터 번역 추가 [416], (2) 팀 이름 최대 길이를 8자에서 15자로 증가 [416], (3) 기존 저장된 시간표는 원래 상태 유지 [416].
Out of Scope Changes check ✅ Passed 모든 변경사항이 #416의 범위 내입니다: 번역 키 추가, 팀 이름 길이 제한 수정, 번역 함수 적용, 상수 스타일 통일(직접 입력 → 직접입력)이 모두 관련 목표를 지원합니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/#416

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.

@github-actions
Copy link

github-actions bot commented Mar 3, 2026

🚀 Preview 배포 완료!

환경 URL
Preview 열기
API Dev 환경

PR이 닫히면 자동으로 정리됩니다.

Copy link

@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 primarily focuses on enhancing internationalization (i18n) by consistently applying the translation function t() to various dynamic strings displayed in the UI, including table names, agenda topics, team names, and speaker names across several components and pages. Key changes include updating numerous English and Korean translation keys in public/locales for consistency, such as changing 'schedule' to 'timetable', shortening 'Previous turn' to 'Previous', and modifying time format strings. Additionally, the maximum length for team names was increased from 8 to 15 characters, and the Korean term '직접 입력' was standardized to '직접입력' in both translation files and code. The useTranslation hook was removed from HeaderTableInfo and HeaderTitle components, and their usage was updated to handle empty names/titles with translated default texts. Review comments highlight inconsistencies in capitalization for 'Topic'/'topic' in translation keys and point out an unused emptyText prop in HeaderTitleProps that should either be utilized or removed. Another comment suggests changing the translation of '설정' from 'settings' to a verb like 'set' for grammatical correctness when used in a phrase like 'Please {{val0}} the debate info'.

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: 1

🧹 Nitpick comments (1)
src/page/TableComposition/components/TableNameAndType/TableNameAndType.tsx (1)

131-135: 팀명 최대 길이는 상수화해 두면 추후 변경 리스크를 줄일 수 있습니다.

검증식과 메시지에 숫자 리터럴이 중복되어 있어 이후 정책 변경 시 누락 가능성이 있습니다.

♻️ 제안 코드
+const MAX_TEAM_NAME_LENGTH = 15;
+
 ...
-              const isTooLong = pros.length > 15 || cons.length > 15;
+              const isTooLong =
+                pros.length > MAX_TEAM_NAME_LENGTH ||
+                cons.length > MAX_TEAM_NAME_LENGTH;
 
               if (isTooLong) {
-                alert(t('팀명은 최대 15자까지 입력할 수 있습니다.'));
+                alert(
+                  t('팀명은 최대 {{max}}자까지 입력할 수 있습니다.', {
+                    max: MAX_TEAM_NAME_LENGTH,
+                  }),
+                );
                 return;
               }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/page/TableComposition/components/TableNameAndType/TableNameAndType.tsx`
around lines 131 - 135, Extract the magic number 15 into a well-named constant
(e.g., TEAM_NAME_MAX_LENGTH) and use that constant in the validation (where
isTooLong is computed) and in the alert message construction inside
TableNameAndType (component/function TableNameAndType). Replace both literal
uses so future changes update a single constant; if the alert text is
i18n-driven, pass the constant as a parameter to the translation call (t)
instead of embedding the literal.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@public/locales/en/translation.json`:
- Around line 230-233: The English translation for the key "설정" is currently the
noun "settings", which breaks grammar when injected into the template key "토론
정보를 {{val0}}해주세요" (mapped to "Please {{val0}} the debate info"); change the
translation value for "설정" from "settings" to the verb form "set" (or another
appropriate verb like "configure") so the composed sentence becomes
grammatically correct (e.g., "Please set the debate info").

---

Nitpick comments:
In `@src/page/TableComposition/components/TableNameAndType/TableNameAndType.tsx`:
- Around line 131-135: Extract the magic number 15 into a well-named constant
(e.g., TEAM_NAME_MAX_LENGTH) and use that constant in the validation (where
isTooLong is computed) and in the alert message construction inside
TableNameAndType (component/function TableNameAndType). Replace both literal
uses so future changes update a single constant; if the alert text is
i18n-driven, pass the constant as a parameter to the translation call (t)
instead of embedding the literal.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 63ea82d and 4558e29.

📒 Files selected for processing (14)
  • public/locales/en/translation.json
  • public/locales/ko/translation.json
  • src/components/HeaderTableInfo/HeaderTableInfo.tsx
  • src/components/HeaderTitle/HeaderTitle.tsx
  • src/hooks/useFullscreen.ts
  • src/page/TableComposition/components/TableNameAndType/TableNameAndType.tsx
  • src/page/TableComposition/components/TimeBox/TimeBox.tsx
  • src/page/TableComposition/components/TimeBoxStep/TimeBoxStep.tsx
  • src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx
  • src/page/TableOverviewPage/TableOverviewPage.tsx
  • src/page/TimerPage/TimerPage.tsx
  • src/page/TimerPage/components/NormalTimer.tsx
  • src/page/TimerPage/components/TimeBasedTimer.tsx
  • src/util/speechType.ts

Copy link
Contributor

@i-meant-to-be i-meant-to-be left a comment

Choose a reason for hiding this comment

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

늦어서 미안합니다 😭 변경 사항 다 확인했어요.

대부분 변경 사항이 상위 컴포넌트와 하위 컴포넌트에서 모두 t()를 사용하던 코드를, 상위 컴포넌트에서 번역된 결과물을 내려주는 식으로 리팩터링하는 방향이었기 때문에, 이해하는 데에는 어려움이 크지 않았습니다.

제가 리뷰드릴 부분은 없는데요, 정확히는 AI 에이전트들이 적어놓은 것들이 꽤 유효한 리뷰 같아서 이것만 수정해주시면 좋을 것 같습니다.

  • '시간표를 설정해주세요'는 'Configure time table'로 번역되어야 하는데 'Configure'가 아닌 'Settings'로 번역된 부분
  • 사용되지 않는 불필요한 매개변수 emptyText 처리에 관한 문제

AI 에이전트의 의견 외에는 저는 별 내용이 없으므로 승인 남깁니다! 고생하셨어요.

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: 2

♻️ Duplicate comments (1)
public/locales/en/translation.json (1)

229-231: ⚠️ Potential issue | 🟡 Minor

설정 번역이 여전히 명사형이라 문장 조합이 깨집니다.

Line 229 템플릿과 합쳐지면 Please settings the debate info가 됩니다. 동사형으로 바꿔 주세요.

✏️ 제안 수정
-  "설정": "settings",
+  "설정": "set up",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@public/locales/en/translation.json` around lines 229 - 231, The "설정"
translation is a noun causing broken English in templates (e.g., "Please
settings the debate info"); update the value for the key "설정" in
translation.json to a verb form such as "set" so the combined template reads
"Please set the debate info" (locate the entry with the key "설정" and change its
value from "settings" to "set").
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@public/locales/en/translation.json`:
- Around line 224-226: The translation keys for timer formats were altered and
no longer match the keys used by the app (see TimeBox.tsx and
TimerCreationContent.tsx which request the keys using the original '{{minutes}}分
{{seconds}}초' pattern), causing lookups to fail; fix by restoring the exact
original i18n keys in translation.json to '{{minutes}}分 {{seconds}}초', '팀당
{{minutes}}分 {{seconds}}초', and '발언당 {{minutes}}分 {{seconds}}초' so they exactly
match the t(...) calls in TimeBox.tsx and TimerCreationContent.tsx (or
alternatively update those t(...) calls to match the new keys everywhere, but
ensure exact string equality between the keys in translation.json and the t(...)
usages).

In `@src/page/TimerPage/components/NormalTimer.tsx`:
- Around line 85-88: The code calls t(teamName) and t(item.speaker) directly in
NormalTimer.tsx, which will translate arbitrary API/user-provided strings;
change this to only translate known default-template values: implement a helper
(e.g., translateIfTemplate(value)) that checks value against a set/map of
allowed template keys/default literals and returns t(key) only for matches,
otherwise returns the original string, then replace the direct t(teamName) and
t(item.speaker) usages with translateIfTemplate(teamName) and
translateIfTemplate(item.speaker).

---

Duplicate comments:
In `@public/locales/en/translation.json`:
- Around line 229-231: The "설정" translation is a noun causing broken English in
templates (e.g., "Please settings the debate info"); update the value for the
key "설정" in translation.json to a verb form such as "set" so the combined
template reads "Please set the debate info" (locate the entry with the key "설정"
and change its value from "settings" to "set").

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4e38a4d0-80ec-4ef8-8482-768d3bae2527

📥 Commits

Reviewing files that changed from the base of the PR and between 4558e29 and 6f3b798.

📒 Files selected for processing (4)
  • public/locales/en/translation.json
  • public/locales/ko/translation.json
  • src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx
  • src/page/TimerPage/components/NormalTimer.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx

@useon useon deployed to PREVIEW_ENV March 10, 2026 12:54 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix 버그 수정

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

[FIX] 추가 번역 적용 및 팀 이름 글자수 검증 에러 해결

2 participants