언어와 오른쪽에서 왼쪽 쓰기
Gitcito의 인터페이스는 번역되어 있어요. 언어는 운영체제가 아니라 Gitcito의 설정이에요 — 영어 macOS를 쓰지만 일본어로 읽고 싶은 개발자는 여기서 바꾸고, 히브리어 시스템을 쓰면서 앱만은 영어로 보고 싶은 개발자의 뜻도 뒤집히지 않아요.
설정 → 일반 → 언어.

제공되는 언어
| English | Español | Deutsch | Français |
| Português (Brasil) | Italiano | Nederlands | Polski |
| Türkçe | Русский | Українська | 简体中文 |
| 日本語 | 한국어 | العربية | עברית |
선택기의 각 행은 그 언어 자신의 표기로 쓰여 있어요. 한국어를 찾는 사람은 한국어를 눈으로 훑지, 벗어나려는 언어로 적힌 "Korean"이라는 단어를 찾지 않으니까요.
국기에 대하여
국기는 나라를 가리키고, 로케일은 언어를 가리켜요. 이 둘은 실제로 딱 맞아떨어지지 않아요 — 아랍어는 스무 개가 넘는 나라의 공용어이고, 포르투갈어는 두 대륙에 걸쳐 있어요. 아이콘은 어느 운영체제의 로케일 선택기든 쓰는 것과 같은 관례를 따라요. 그 로케일의 주요 지역이죠. 이 아이콘들은 한눈에 알아보라고 있는 것이지, 어떤 언어가 누구의 것인지 주장하려고 있는 게 아니에요.
이모지가 아니라 벡터 그림으로 그린 것도 일부러예요. Windows에는 국기 이모지가
아예 들어 있지 않아서, 🇩🇪 는 거기서 "DE"라는 글자가 든 네모로 그려져요.
오른쪽에서 왼쪽으로
아랍어와 히브리어는 인터페이스 전체를 좌우로 뒤집어요. 사이드바가 오른쪽으로 가고, 패널과 툴바가 뒤집히고, 어딘가를 가리키던 아이콘은 반대쪽을 가리켜요.
전환은 즉시 이루어지고 재시작할 필요가 없어요.

일부러 뒤집지 않는 것
어떤 내용은 어떤 언어를 읽든 왼쪽에서 오른쪽이에요. 그걸 뒤집으면 오히려 틀린 것이 되니, 다음은 그대로 둬요:
| LTR로 남는 것 | 이유 |
|---|---|
| 커밋 그래프 | 레인 위치를 픽셀로 계산하기 때문에, 뒤집힌 컨테이너는 그려진 선과 어긋나요 |
| diff와 파일 내용 | 코드는 LTR이고, 뒤집힌 diff는 읽을 수가 없어요 |
| blame과 충돌 출력 | 같은 이유예요 — 그 텍스트는 산문이 아니라 소스니까요 |
| 내장 터미널 | 자기 격자를 직접 그리고, git의 출력은 LTR이에요 |
| 경로, SHA, ref, 명령 | refs/heads/main 은 한 방향으로만 읽혀요 |
이들 각각은 격리되어 있어서, 그 안에 들어간 아랍어 한 조각 — 브랜치 이름, 커밋 메시지, 파일 이름 — 이 주변 텍스트의 순서를 흔들 수 없어요.
한계
어디에서 멈추는지 솔직하게 말할게요:
- 커밋 메시지, 브랜치 이름, 파일 내용의 방향은 Gitcito가 절대 바꾸지 않아요. 작성자가 쓴 그대로 보여줘요. LTR로 격리된 목록 안의 히브리어 커밋 메시지는 히브리어로 그려지지만, 그것을 담은 행이 거기에 맞춰 뒤집히지는 않아요.
- 서드파티 화면은 자기 방향을 지켜요 — 터미널은 xterm이고, Markdown 미리 보기는 문서를 쓰인 그대로 렌더링해요.
- 방향이 섞인 파일 이름은 어려워요. 영어 트리 안에 아랍어 폴더가 든 경로는 순서를 바꾸는 대신 격리하는데, 이게 옳은 처리이긴 해도 처음 보면 놀랄 수 있어요.
이 안내서도 번역돼요
버튼만이 아니에요. 지금 읽고 있는 모든 페이지가 위 목록의 모든 언어로 다 있어요 — 설명도, 각 옵션이 무엇을 하는지 정리한 표도, 어떤 기능이 무엇을 하지 않는지 밝혀 둔 절도요. 인터페이스 언어를 바꾸면 앱에서든 웹사이트에서든 안내서도 같이 바뀌어요.
번역은 덜 되어 있어도 괜찮아요. 아직 번역되지 않은 페이지는 빈 페이지 대신 영어 페이지가 나오고, 사이드바는 어떤 언어에서든 같은 모양을 유지해서 스크린샷이나 설명이 눈앞의 화면과 계속 맞아떨어져요.
웹사이트에서는 페이지마다 언어 전환기가 있어서, 읽고 있던 그 페이지에 그대로 머물러요. 언어를 바꾸는 건 처음부터 다시 시작하는 것과 다르니까요.
무엇이 기계 번역이고, 그 대가는 무엇인지. 영어와 스페인어는 사람이 직접 썼어요. 나머지는 용어집을 두고 모델이 번역한 뒤 스크립트로 검사했어요. 모든 페이지, 모든 링크, 모든 이미지 경로, 모든 코드 블록을 영어와 바이트 단위로 맞춰 봐요. 이걸로 깨진 구조는 잡혀요. 맞기는 하지만 뻣뻣한 문장은 잡히지 않아요. 어떤 페이지가 여러분의 언어에서 어색하게 읽힌다면, 그건 알릴 만한 버그예요.
언어 추가하기
사전은 src/renderer/src/i18n/ 아래 로케일마다 파일 하나이고, 영어 파일이
나머지 전부의 타입을 검사하는 기준이에요 — 키가 빠지면 조용히 영어로 되돌아가는
게 아니라 컴파일 오류가 나요. 테스트 스위트는 문자열이 끼워 넣는 모든
{placeholder} 가 번역 뒤에도 살아남는지까지 확인해서, 문장이 다른 언어로 가는
길에 커밋 sha를 잃어버릴 수 없게 해요.
안내서도 똑같이 돌아가요. docs/help/ 에 영어 페이지가 있고,
docs/help/<locale>/ 에 각 번역이 페이지마다 같은 파일 이름으로 하나씩 있어요.
npm run lint:docs 는 번역된 페이지마다 영어 원본이 있는지, front matter가
빠짐없이 채워졌는지, 링크와 이미지가 한 단계 더 깊은 위치에서 제대로 풀리는지
확인해요.
기여는 언제든 환영이에요 — 한 번에 한 페이지씩이어도 좋고, 어색한 번역을 다듬는 일은 빠진 번역을 채우는 일만큼 도움이 돼요.