Tiro
Tiro Design
Guidelines

Localization

한국어·영어·일본어 글로서리, 문자열 아키텍처, i18n 제약사항.

Source of truth: packages/locales/src/{ko,en,ja}/common.json

0. 정책 개요

영어 전용 (English-Across-Locales) 라벨

일부 UI 라벨은 모든 로케일에서 영어로 유지됩니다 — 의도적 global-premium 일관성.

  • Login 헤드라인 ("Get Started with Tiro", "Perfectly crafted meeting notes")
  • AI 채팅 인사말 ("Hi [name], Nice to see you again")
  • AI 채팅 placeholder ("Ask anything to tiro")
  • SSO 버튼 라벨 ("Continue with Google" 등)

그 외 in-app 기능 라벨 (탭, 버튼, 섹션 헤더)은 완전 로컬라이즈됩니다.

Brand Display Fonts per Locale

Market마케팅 헤드라인 폰트UI 폰트
ENAveria Serif LibrePretendard JP
KONoto Serif KR (editorial 필요 시) / Pretendard JP (기본)Pretendard JP
JANoto Serif JPPretendard JP

한국어 UI 헤드라인은 Pretendard JP 기본 — 한글 세리프는 Averia의 따뜻함 부족.

1. Glossary — Product Nouns

1.1 Product identity

ConceptKOENJA
Product name티로 TiroTiroTiro
Tagline가장 정확한 AI 미팅노트Perfectly crafted meeting notes完璧な議事録を、自動で。
Sub-tagline대화에만 집중할 수 있게No more note-taking. Just focus on your conversation.録音から要約まで、すべて自動。

"Tiro" 단독 사용 금지 — KO에서는 반드시 "티로 Tiro" 병기.

1.2 Core objects

ConceptKOENJA
Note노트Noteノート
Folder폴더Folderフォルダ
Recording녹음Recording録音
Audio file음성 파일Audio file音声ファイル
Transcript스크립트Transcriptスクリプト
Summary요약Summary要約
Meeting memo회의 메모Meeting memo議事メモ
One-pager1페이저One-pager1ページャー
Template템플릿Templateテンプレート
Language pair언어 페어Language pair言語ペア

1.3 People / identity

ConceptKOENJA
Speaker (identified)화자Speaker話者
Speaker (unknown)화자 1, 화자 2Speaker 1, Speaker 2話者1, 話者2
Participant참여자Participant参加者
Member (org)멤버Memberメンバー
Organization / Workspace워크스페이스Workspaceワークスペース
TeamTeamチーム
Owner소유자Ownerオーナー
Admin관리자Admin管理者
Guest게스트Guestゲスト

1.4 Primary actions

ConceptKOENJA
Start Recording기록 시작Start Recording記録開始
Stop Recording기록 종료Stop Recording記録終了
Pause일시정지Pause一時停止
Resume다시 시작Resume再開
Save저장Save保存
Delete삭제Delete削除
Cancel취소Cancelキャンセル
Confirm확인Confirm確認
Share공유Share共有
Invite초대Invite招待
Export내보내기Exportエクスポート
Download다운로드Downloadダウンロード
Copy복사Copyコピー
Edit편집Edit編集
Rename이름 바꾸기Rename名前を変更
Move이동Move移動
Search검색Search検索

1.5 Navigation / tabs

ConceptKOENJA
HomeHomeホーム
All notes모든 노트All notesすべてのノート
Shared with me나에게 공유됨Shared with me共有されたノート
Trash휴지통Trashゴミ箱
Settings설정Settings設定
My page마이페이지My pageマイページ

1.6 Recording tabs (recording start panel)

ConceptKOENJA
Record (offline)녹음하기Record録音
Live notes (streaming)실시간 기록Live Notesリアルタイム記録
Audio file upload음성파일Audio File音声ファイル

1.7 Note view tabs

ConceptKOENJA
Meeting memo회의 메모Meeting memo議事メモ
Transcript스크립트Transcriptスクリプト
One-pager1페이저One-pager1ページャー
Note노트Noteノート

1.8 Language pair labels

ConceptKOENJA
Listen (conversation) language대화 (듣기)Conversation (Listen)会話(聞く)
Write (record) language기록 (쓰기)Notes (Write)記録(書く)
Language언어Language言語

1.9 Status / states

ConceptKOENJA
In progress진행중In progress進行中
Completed완료됨Completed完了
Cancelled취소됨Cancelledキャンセル済み
Draft임시 저장Draft下書き
Archived보관됨Archivedアーカイブ済み
Scheduled deletion삭제 보류Pending deletion削除待ち

1.10 Billing / subscription

ConceptKOENJA
Free trial무료체험Free trial無料トライアル
Free plan무료 플랜Free plan無料プラン
Pro plan프로ProPro
Max plan맥스MaxMax
Team plan팀 플랜Team planチームプラン
Enterprise plan엔터프라이즈Enterpriseエンタープライズ
Upgrade플랜 업그레이드Upgradeプラン変更
Subscribe구독하기Subscribe購読する
Cancel subscription구독 취소Cancel subscription購読をキャンセル
Monthly월간Monthly月額
Yearly연간Yearly年額
Billing period결제 주기Billing period請求周期
Invoice청구서Invoice請求書
Refund환불Refund返金

1.11 AI / intelligent features

ConceptKOENJA
Ask TiroAsk TiroAsk TiroAsk Tiro
AI chat placeholderAsk anything to tiroAsk anything to tiroAsk anything to tiro
AI chat greetingHi [name], Nice to see you againHi [name], Nice to see you againHi [name], Nice to see you again
Generate summary요약 생성Generate summary要約を生成
Regenerate다시 생성Regenerate再生成
Suggestions제안Suggestions提案

AI 관련 라벨은 English-Across-Locales — premium 일관성 + 브랜드 모멘트.

1.12 Empty / error states

ConceptKOENJA
No notes yet아직 노트가 없어요No notes yetまだノートがありません
No search results검색 결과가 없습니다No results found検索結果がありません
Network error연결에 문제가 있습니다Connection error接続エラー
Save failed저장에 실패했습니다Couldn't save保存に失敗しました
Upload failed업로드에 실패했습니다Upload failedアップロードに失敗しました
Try again다시 시도Try again再試行

1.13 Onboarding / first-use

ConceptKOENJA
Welcome환영합니다Welcomeようこそ
Get started시작하기Get started始める
Record your first note첫 노트를 녹음해보세요Record your first note最初のノートを録音
Tutorial튜토리얼Tutorialチュートリアル
Skip건너뛰기Skipスキップ

1.14 Time / frequency

ConceptKOENJA
Today오늘Today今日
Yesterday어제Yesterday昨日
Last 7 days최근 7일Last 7 days過去7日間
This month이번 달This month今月
Just now방금 전Just nowたった今
N minutes agoN분 전N minutes agoN分前
N hours agoN시간 전N hours agoN時間前

날짜·시간 포맷은 Intl.DateTimeFormat + locale. 수동 포맷 금지.

1.15 Marketing / taglines

EN

  • Perfectly Crafted Meeting Notes
  • The Most Accurate AI Meeting Assistant
  • No more note-taking. Just focus on your conversation.
  • Meet Tiro. Your meetings, perfectly remembered.

KO

  • 티로 Tiro — 가장 정확한 AI 미팅노트
  • 대화에만 집중할 수 있게, 가장 정확한 AI 회의록
  • 실시간 요약·다국어 동시 번역으로 자신있게 대화하고 원하는 양식의 문서를 3초 만에 완성하여 공유해보세요

JP

  • Tiro:AI議事録・文字起こし
  • 録音から要約まで、すべて自動。
  • 完璧な議事録を、自動で。

2. i18n Constraints

2.1 문장 구조

  • 문장 파편 concatenation 금지 — 로케일별 완전 문장
    • "Your " + count + " notes"
    • t('noteCount', { count })"노트 3개" / "3 notes" / "ノート 3件"
  • EN → KO/JA는 30–40% 길이 확장 허용 — fixed px width 금지
  • 한 문장 내 언어 혼용 금지 — "Tiro를 download하세요" 같은 표현 금지

2.2 존댓말 / 문체

  • KO 시스템 카피: 합쇼체 (formal) 기본
  • KO 반말: 팀 내부 툴, 실험적 CS 봇 문구만
  • EN: sentence case 기본, Title Case는 브랜드 모멘트 (히어로, SSO 버튼)만
  • JP: 문장체 (です/ます) 기본. 마케팅 헤드라인은 句点 "。" 사용 허용

2.3 숫자 / 통화 / 날짜

  • 숫자 표시: tabular-nums CSS 적용 (통화, 시간, 카운터)
  • 날짜/시간: Intl.DateTimeFormat(locale) 사용
  • 통화: Intl.NumberFormat(locale, { style: 'currency', currency: 'USD' })
  • JP 통화 포맷: ¥1,200 (한자 금액 "千二百円" 쓰지 않음)

2.4 Right-to-left (RTL)

현재 미지원. v0.3 기준 RTL 레이아웃 작업 대상 아님. 필요 시 별도 결정.

3. String Architecture

3.1 저장 위치

종류위치변경 권한
제품 UX 스트링packages/locales/src/{ko,en,ja}/common.jsonDev + Marketing 합의
마케팅 카피 (landing, app store)마케팅 스트링 레포 (경로 미정, §5 결정 사항)Marketing
에러 메시지 (서버)서버 레포 locales/Dev

컴포넌트는 브랜드 카피 하드코딩 절대 금지title, description, label을 props로 받음.

3.2 Key naming convention

common.json key 패턴: <surface>.<component>.<role>

예:

{
  "recording.tabs.offline": "녹음하기",
  "recording.tabs.live": "실시간 기록",
  "recording.controls.start": "기록 시작",
  "paywall.plans.pro.name": "프로",
  "empty.notes.title": "아직 노트가 없어요",
  "empty.notes.description": "첫 회의를 녹음하면 여기에 나타납니다",
  "empty.notes.cta": "녹음 시작"
}

금지 패턴:

  • ❌ Surface 없는 flat key (start, save) — 컨텍스트 상실
  • ❌ 문장 파편으로 분해된 key (paywall.part1, paywall.part2)
  • ❌ HTML/마크다운이 포함된 value

3.3 Pluralization

ICU message format 또는 i18next plural 사용. 직접 if (count === 1) 분기 금지.

// ko
"noteCount": "노트 {count}개"
// en
"noteCount_one": "{count} note",
"noteCount_other": "{count} notes"
// ja
"noteCount": "ノート {count}件"

KO/JA는 단/복수 구분 없음 → single form.

4. Extraction / Sync Tooling

4.1 추출 스크립트 템플릿

common.json 스냅샷을 DS 문서 glossary 포맷으로 변환:

// scripts/extract-glossary.ts
import ko from '@/locales/ko/common.json'
import en from '@/locales/en/common.json'
import ja from '@/locales/ja/common.json'

const rows: string[] = []
for (const key of Object.keys(ko)) {
  const koVal = ko[key] ?? '⚠️ missing'
  const enVal = en[key] ?? '⚠️ missing'
  const jaVal = ja[key] ?? '⚠️ missing'
  rows.push(`| ${key} | ${koVal} | ${enVal} | ${jaVal} |`)
}
console.log(rows.join('\n'))

출력 → DS 문서 glossary 섹션에 붙여넣기. 누락 로케일이 ⚠️ missing 표시되어 발견 쉬움.

4.2 누락 감지 CI

Pre-commit 또는 CI 스텝:

# 모든 로케일이 동일한 key 집합을 가지는지 검증
diff <(jq -r 'keys[]' ko/common.json | sort) \
     <(jq -r 'keys[]' en/common.json | sort)

누락 key 발견 시 CI fail.

5. Do / Don't

  • Do: 모든 product noun을 KO/EN/JA에 동시 확보 (신규 feature PR 머지 전)
  • Do: 로케일별 native-authored 카피 (writing.md 참고) — 기계적 번역 금지
  • Do: 시간·숫자·날짜는 Intl API로 로케일 자동 포맷
  • Do: Key를 <surface>.<component>.<role> 패턴으로
  • Don't: 문장 파편 concatenation ("Your " + count + " notes") 금지
  • Don't: fixed px width로 텍스트 길이 제한 금지
  • Don't: 영어 원문을 기계적으로 KO/JA 번역 (시장별 native tone 유지)
  • Don't: Plural 처리를 if/else로 직접 분기 금지
  • Don't: 한 문장 내 언어 혼용 금지

On this page