言語と右から左への表記
Gitcito のインターフェイスは翻訳されています。言語は OS の設定ではなく Gitcito の設定です。macOS を英語で使っていても日本語で読みたい開発者はここで変えられ ますし、システムがヘブライ語でもアプリは英語がいいという開発者の意向が覆されることも ありません。
設定 → 一般 → 言語。

同梱されているもの
| English | Español | Deutsch | Français |
| Português (Brasil) | Italiano | Nederlands | Polski |
| Türkçe | Русский | Українська | 简体中文 |
| 日本語 | 한국어 | العربية | עברית |
ピッカーの各行は、その言語自身で書かれています。韓国語を探している人が目で追っている のは 한국어 であって、いま抜け出そうとしている言語で書かれた「韓国語」という単語では ありません。
旗について
旗が指すのは国で、ロケールが指すのは言語です。この 2 つは本当のところ噛み合いません。 アラビア語は 20 を超える国の公用語ですし、ポルトガル語は 2 つの大陸にまたがっています。 アイコンは、どの OS のロケール選択画面も使っているのと同じ慣習に従っています。その ロケールの主要な地域です。目的は ひと目で見分けられること であって、その言語が誰の ものかを主張することではありません。
絵文字ではなくベクター画像で描いているのには理由があります。Windows には旗の絵文字が
そもそも入っておらず、🇩🇪 はそこでは「DE」の 2 文字が入った四角として表示されます。
右から左へ
アラビア語とヘブライ語では、インターフェイス全体が反転します。サイドバーは右へ移り、 パネルとツールバーは左右が入れ替わり、どこかを指しているアイコンは逆を向きます。
切り替えは即座で、再起動は要りません。

あえて反転しないもの
どの言語で読んでいようと、左から右のままの内容があります。反転させることが積極的に 間違いになるので、これらはそのままです。
| 左から右のまま | 理由 |
|---|---|
| コミットグラフ | レーンの位置はピクセルで計算されており、反転したコンテナは描かれた線と食い違います |
| 差分とファイルの中身 | コードは左から右であり、反転した差分は読めません |
| blame とコンフリクトの出力 | 同じ理由です。そこにあるのは散文ではなくソースだからです |
| 統合ターミナル | 自前のグリッドを描画しますし、git の出力は左から右です |
| パス、SHA、ref、コマンド | refs/heads/main は一方向にしか読めません |
これらはそれぞれ隔離されているので、その中に 現れるアラビア語 — ブランチ名、コミット メッセージ、ファイル名 — が周囲のテキストの並びを崩すことはありません。
限界
どこで止まるのかについて、正直に書きます。
- コミットメッセージ、ブランチ名、ファイルの中身の向きを Gitcito が変えることは ありません。 書いた人が書いたとおりに表示します。左から右に隔離された一覧の中の ヘブライ語のコミットメッセージはヘブライ語として表示されますが、それに合わせて行 全体が反転することはありません。
- サードパーティの表示面は自分の向きを保ちます。 ターミナルは xterm ですし、 Markdown のプレビューは書かれたとおりに文書を描画します。
- 向きが混ざったファイル名は難物です。 英語のツリーの中にあるアラビア語のフォルダを 含むパスは、並べ替えではなく隔離という扱いになります。これは正しい挙動ですが、最初に 見たときは意外に映るかもしれません。
このハンドブックも翻訳されています
ボタンだけではありません。あなたが読んでいるどのページも、上の一覧にある言語すべてに存在します。 説明も、各オプションが何をするかの表も、その機能が何をしないと決めているかを書いた節も です。インターフェイスの言語を切り替えると、アプリでもウェブサイトでも、ハンドブックも 一緒に切り替わります。
翻訳は不完全でも構いません。まだ翻訳されていないページは、ページが欠けるのではなく英語の ものが表示されます。サイドバーはどの言語でも同じ形を保つので、スクリーンショットや手順の 説明は目の前の画面とずれません。
ウェブサイトでは各ページに言語切り替えが付いていて、読んでいたページのまま言語だけが 変わります。言語を変えることは、最初からやり直すことではないからです。
何が機械翻訳で、その代償は何か。 英語とスペイン語は人手で書きました。残りは用語集に 沿ってモデルが翻訳し、そのあとスクリプトで検査しています。すべてのページ、すべてのリンク、 すべての画像パス、すべてのコードブロックを、英語と 1 バイト単位で突き合わせます。これで 壊れた構造は見つかります。正しいけれど硬い文は見つかりません。あなたの言語で読みにくいペー ジがあれば、それは報告する価値のあるバグです。
言語を追加する
辞書は src/renderer/src/i18n/ の下にロケールごとに 1 ファイルずつ置かれており、
英語のファイルがほかのすべての型検査の基準になります。キーが欠けていれば、黙って英語に
フォールバックするのではなく、コンパイルエラーになります。テストスイートは、文字列が
埋め込む {placeholder} が翻訳後も残っているかも確認します。だから、ある文が別の言語へ
渡る途中でコミットの sha を落とすことはありません。
ハンドブックも同じ仕組みです。docs/help/ に英語のページが置かれ、
docs/help/<locale>/ に各翻訳が、同じファイル名でページごとに 1 ファイルずつ置かれます。
npm run lint:docs は、翻訳された各ページに英語の原文があるか、front matter がそろって
いるか、リンクと画像が 1 階層深い位置から解決できるかを確認します。
貢献は歓迎します。1 ページずつで構いませんし、ぎこちない翻訳を直すことは、欠けている ページを足すのと同じくらい役に立ちます。