Conversation
Summary of ChangesHello, 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
Changelog
Using Gemini Code AssistThe 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
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 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
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (2)
WalkthroughUI 텍스트를 광범위하게 i18n(t())로 감싸고 영어 번역 파일에서 “schedule”→“timetable” 용어 전환을 적용했으며, 팀명 최대 길이를 8자에서 15자로 확대하고 Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
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. Comment |
🚀 Preview 배포 완료!
|
There was a problem hiding this comment.
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'.
There was a problem hiding this comment.
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
📒 Files selected for processing (14)
public/locales/en/translation.jsonpublic/locales/ko/translation.jsonsrc/components/HeaderTableInfo/HeaderTableInfo.tsxsrc/components/HeaderTitle/HeaderTitle.tsxsrc/hooks/useFullscreen.tssrc/page/TableComposition/components/TableNameAndType/TableNameAndType.tsxsrc/page/TableComposition/components/TimeBox/TimeBox.tsxsrc/page/TableComposition/components/TimeBoxStep/TimeBoxStep.tsxsrc/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsxsrc/page/TableOverviewPage/TableOverviewPage.tsxsrc/page/TimerPage/TimerPage.tsxsrc/page/TimerPage/components/NormalTimer.tsxsrc/page/TimerPage/components/TimeBasedTimer.tsxsrc/util/speechType.ts
i-meant-to-be
left a comment
There was a problem hiding this comment.
늦어서 미안합니다 😭 변경 사항 다 확인했어요.
대부분 변경 사항이 상위 컴포넌트와 하위 컴포넌트에서 모두 t()를 사용하던 코드를, 상위 컴포넌트에서 번역된 결과물을 내려주는 식으로 리팩터링하는 방향이었기 때문에, 이해하는 데에는 어려움이 크지 않았습니다.
제가 리뷰드릴 부분은 없는데요, 정확히는 AI 에이전트들이 적어놓은 것들이 꽤 유효한 리뷰 같아서 이것만 수정해주시면 좋을 것 같습니다.
- '시간표를 설정해주세요'는 'Configure time table'로 번역되어야 하는데 'Configure'가 아닌 'Settings'로 번역된 부분
- 사용되지 않는 불필요한 매개변수
emptyText처리에 관한 문제
AI 에이전트의 의견 외에는 저는 별 내용이 없으므로 승인 남깁니다! 고생하셨어요.
There was a problem hiding this comment.
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
📒 Files selected for processing (4)
public/locales/en/translation.jsonpublic/locales/ko/translation.jsonsrc/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsxsrc/page/TimerPage/components/NormalTimer.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
- src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx
🚩 연관 이슈
closed #416
📝 작업 내용
상수나 데이터를 ui에 사용하는 경우 번역이 되지 않는 문제
이유는 현재 헤더가 있는 모든 페이지에서 실시간으로 언어를 설정해서 바꿀 수 있고 한번 시작한 토론에서 또 언어에 따라 기본 템플릿을 언어에 따라 갈아끼워야 하는 것보다 기본템플릿은 한글 하나로 두고 키를 매핑하여 키가 존재하는 경우 번역이 이루어지도록 만들었습니다. (키가 존재하지 않는 경우는 사용자 입력인 경우인데 이때는 사용자 입력대로 보여집니다.)
영어 시간표를 생성할 경우 default 팀이름이 글자수 검증 규칙을 초과하여 400에러 발생
문제의 원인은 8자로 설정되어 있는 팀 이름의 글자수 규칙이 영어로 변환되었을 때 11자를 넘는 경우가 생겨(찬성 -> Affirmative) 에러가 발생했습니다.
이에 백엔드와 합의하여 팀 이름의 글자수에 대해 15자로 수정하여 해결했습니다!
참고로..
현재 이미 한글 또는 영어로 생성된 시간표에 한해서는 설정된 당시의 시간표로 저장이 됩니다..!
따라서 설정이 영어로 되어 있다고 해도 한글로 생성된 시간표가 영어로 보이지는 않습니다.
영어 시간표를 생성하고 진행하는 유저가 서비스 언어를 한글로 설정을 해서 사용하거나, 한글 시간표를 생성하고 토론을 진행하는 유저가 서비스 언어를 영어로 설정하고 진행하는 경우는 드물다고 생각했기 때문입니다.
또한 서비스 특성상 사용자 입력이 들어가고, 하나의 언어로 함께 합의를 하고 토론을 진행하는 것이라 생각했기에 정보성 글을 전달하는 블로그 글이나 소개 사이트와는 다르게 현재의 구현이 적합하다고 판단했습니다.
🏞️ 스크린샷 (선택)
🗣️ 리뷰 요구사항 (선택)
진짜 다국어화 하면서 책을 5번 이상 읽으며 교정한다는 출판사 편집자의 심정을 이해하게 되었습니다........
진짜 누락 번역 작업이 저랑 숀이랑 확인을 하고 올려도 콜리에게 또 발견이 되는 .. ㅎ .. 🤣 !!!
비토가 만들어주신🙇♀️ 프리뷰를 보시고 혹시나 번역이 누락된 부분은 없는지 살펴봐 주시면 감사하겠습니다 !!
Summary by CodeRabbit
릴리스 노트
새로운 기능
개선사항