BerriAI/litellm fork → ui/litellm-dashboard에 i18n 인프라 신설 → 한국어 locale 추가
LiteLLM 공식 저장소 - Python proxy + Next.js Admin UI
FastAPI 기반 LLM Gateway Proxy
Next.js 16 + React 18 Admin UI
docs/i18n/TERMINOLOGY-AGREEMENT.md
이 문서 합의 전에는 각자 번역 시작하면 안 됨. 용어 불일치 발생.
| Branch | 담당 파일 (독점) | 공유 파일 (주의) |
|---|---|---|
i18n-infra |
lib/i18n/*, layout.tsx, AntdGlobalProvider.tsx | package.json ← 선행 확정 |
i18n-common |
locales/*/common.json, Navbar/* | 없음 |
i18n-keys-usage |
locales/*/keys.json, usage.json, logs.json VirtualKeysPage/*, UsagePage/*, view_logs/* |
common.json import 시 참조만 |
i18n-teams-models |
locales/*/teams.json, models.json, settings.json team/*, view_users/*, model_dashboard/*, Settings/* |
common.json import 시 참조만 |
i18n-budgets-access |
locales/*/budgets.json, access.json, permissions.json budgets/*, AccessGroups/*, permissions/*, organization/* |
common.json import 시 참조만 |
⚠️ 각 브랜치는 자기 담당 locale 파일과 컴포넌트만 수정. common.json은 담당 A만 수정하고 나머지는 import만 함.
git checkout -b feature/i18n-infra main
git checkout -b feature/i18n-common feature/i18n-infra
git fetch origin feature/i18n-infra
git checkout -b feature/i18n-keys-usage origin/feature/i18n-infra
git fetch origin feature/i18n-infra
git checkout -b feature/i18n-teams-models origin/feature/i18n-infra
git fetch origin feature/i18n-infra
git checkout -b feature/i18n-budgets-access origin/feature/i18n-infra
📌 모든 feature 브랜치는 i18n-infra가 머지된 후 시작. infra 브랜치에서 분기해야 i18n 설정 포함.
feature/i18n-infra 브랜치에서 작업. 머지 후 다른 담당자 시작.
feature/i18n-common 브랜치. 담당 A가 전체 키 추출 후 NS별 분배.
각 담당자가 자기 브랜치에서 독립 작업. 파일 충돌 없음.
i18n-common 담당 A: common.json + Navbar/*~80 키i18n-keys-usage 담당 B: keys/usage/logs.json + 컴포넌트~250 키i18n-teams-models 담당 C: teams/models/settings.json + 컴포넌트~300 키i18n-budgets-access 담당 D: budgets/access/permissions.json + 컴포넌트~200 키충돌 최소화 위해 순서대로 머지. 각 PR 후 빌드 확인.
전체 통합 후 화면별 검수. 브랜딩 적용.
release/i18n-v1.0 태그 생성. Docker 이미지 빌드.
| Namespace | 추정 키 수 | 대상 도메인 | 복잡도 |
|---|---|---|---|
| common | 50~80 | Navbar, 공통 버튼·라벨 | |
| auth | 20~30 | login, onboarding | |
| keys | 80~120 | VirtualKeysPage, KeyAliasSelect, DeletedKeysPage | |
| teams | 60~100 | team, view_users, organization | |
| models | 80~120 | model_dashboard, model_add, add_model, view_model | |
| usage | 60~100 | UsagePage, EntityUsageExport, CostTracking | |
| budgets | 40~60 | budgets | |
| mcp | 60~100 | mcp_tools, mcp_server_management | |
| guardrails | 40~60 | guardrails, GuardrailsMonitor | |
| settings | 80~120 | Settings (AdminSettings 포함) | |
| playground | 40~60 | playground, chat | |
| logs | 40~60 | view_logs | |
| 기타 | 300~500 | tag/vector_store/cache/policy/routing/workflow/agents/AIHub/Projects |
<Title>Key Ownership</Title>
<Tooltip title="Select who...">
header: "Model Name"
NotificationsManager.success("...")
<Form.Item label="User Email">
<Modal title="Create New Key">
Facebook의 AST 기반 코드 변환 도구. 95% 자동 변환 가능
키 추출 전용. 다국어 카탈로그 생성
자동화 불가 영역. 수동 검토 필요
<Title>Key Ownership</Title>
<Title>{t('keys.ownership')}</Title>
<Input placeholder="Enter name" />
<Input placeholder={t('form.enterName')} />
<Form.Item label={<span>Email</span>}>
<Form.Item label={t('form.email')}>
{ header: "Model Name", key: "model" }
{ header: t('models.name'), key: "model" }
| 카테고리 | 자동화율 | 도구 | 예상 소요 |
|---|---|---|---|
| JSX text children | 95% | jscodeshift | 자동 |
| JSX string props | 95% | jscodeshift | 자동 |
| AntD form labels | 90% | jscodeshift | 자동 |
| Table headers | 95% | jscodeshift | 자동 |
| Object properties | 90% | jscodeshift | 자동 |
| 동적 문자열 | 10% | 수동 | High |
| 템플릿 리터럴 | 30% | 수동 | Medium |
| 전체 평균 | ~95% | Hybrid | 15~20h |
| English | Korean (권장) | 비고 |
|---|---|---|
| Virtual Key | 가상 키 | API 키 대신 사용하는 프록시 키 |
| Spend | 지출 | 비용/사용량 맥락 |
| Budget | 예산 | 할당된 비용 한도 |
| Soft Budget | 소프트 예산 | 경고만, 차단 안 함 |
| Hard Budget | 하드 예산 | 초과 시 차단 |
| Guardrail | 가드레일 | 안전 장치/제한 |
| RPM | 분당 요청 수 (RPM) | 약어 유지 + 설명 |
| TPM | 분당 토큰 수 (TPM) | 약어 유지 + 설명 |
| Token | 토큰 | LLM 처리 단위 |
| Prompt Token | 프롬프트 토큰 | 입력 토큰 |
| Completion Token | 완성 토큰 | 출력 토큰 |
| English | Korean (권장) | 비고 |
|---|---|---|
| Team | 팀 | |
| Organization | 조직 | |
| Admin | 관리자 | |
| Internal User | 내부 사용자 | |
| Proxy Admin | 프록시 관리자 | |
| Admin Approval | 관리자 승인 | |
| Access Group | 접근 그룹 | |
| Permission | 권한 | |
| SSO | SSO (싱글 사인온) | 약어 유지 |
| SCIM | SCIM | 프로토콜명 유지 |
| English | Korean (권장) | 비고 |
|---|---|---|
| Model | 모델 | |
| Endpoint | 엔드포인트 | |
| Provider | 제공자 | OpenAI, Azure 등 |
| Fallback | 폴백 | 대체 모델 |
| Usage | 사용량 | |
| Request | 요청 | |
| Response | 응답 | |
| Latency | 지연 시간 | |
| Throughput | 처리량 | |
| Cache | 캐시 |
| English | Korean (권장) | 비고 |
|---|---|---|
| Settings | 설정 | |
| Configuration | 구성 | |
| Dashboard | 대시보드 | |
| Logs | 로그 | |
| Playground | 플레이그라운드 | |
| MCP | MCP | Model Context Protocol |
| Vector Store | 벡터 스토어 | |
| Router | 라우터 | |
| Pass-Through | 패스스루 | |
| Webhook | 웹훅 |