mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-24 10:46:50 -06:00
i18n(ja): translate every dialog, message and menu string the pt-BR catalog covers
The Japanese catalog still lived inline in i18n.rs with its ribbon and widget labels, so with the interface set to 日本語 the dialog titles and labels, message boxes, Backstage/File-view items, template names and native menus showed in English. This moves it to i18n/ja.rs and adds the 545 keys the Brazilian Portuguese catalog translates beyond it: 943 keys, the coverage pt-BR has (~43% of ~2,200 strings), in Excel for Mac 日本語版 wording. CORE keeps the shared reference set every catalog covers, verbatim and in the same order (the cross-catalog coverage test still points at it); DIALOGS holds the new strings, and the lookup checks it first. One test parses pt.rs's source so the two catalogs cannot drift apart again, one checks that every key is unique across the two lists and every value is translated, and one spot-checks the high-value strings. Docs: the Japanese row and the "Where we are" bullet in docs/localization-parity.md (943, ~43%), a revision row, the ROADMAP Languages paragraph and progress log, and gaps.md §11.
This commit is contained in:
+7
-4
@@ -2,7 +2,7 @@
|
||||
|
||||
**Stage: alpha** · next: beta, ~25 points of "ready for real work" and ~160–240 h away
|
||||
|
||||
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-12 · **Change:** minor (rows auto-fit oversized fonts on open and whole-row/column formatting) · **Target:** Microsoft Excel (Microsoft 365)
|
||||
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-17 · **Change:** minor (the Japanese catalog covers the dialogs, messages and menus) · **Target:** Microsoft Excel (Microsoft 365)
|
||||
|
||||
GridCraft aims at full Microsoft Excel parity, and at being better in places: faster, open (XLSX
|
||||
is the native format), fully scriptable by agents (MCP, control channel, CLI), and on the web.
|
||||
@@ -93,7 +93,9 @@ The ribbon is translated into Japanese, Simplified Chinese, Korean, Brazilian Po
|
||||
and German (266–268 labels each, ~12% of ~2,200 strings; merged 10-10 in #31, #104, #82, German
|
||||
added 10-11), the
|
||||
interface follows the system language, and CJK, Thai and Hebrew text falls back to system fonts
|
||||
(#38). Dialogs, menus and messages are English; formulas and number formats are en-US only.
|
||||
(#38). Japanese (10-17) and Brazilian Portuguese also translate the dialog titles and labels,
|
||||
message boxes, Backstage/File-view items, template names and native menus: 943 strings each, ~43%.
|
||||
The remaining dialogs, menus and messages are English; formulas and number formats are en-US only.
|
||||
Localized German formulas and numbers are in PR #163. Detail: [localization-parity.md](docs/localization-parity.md).
|
||||
|
||||
| Language | Code | Status | UI strings |
|
||||
@@ -104,9 +106,9 @@ Localized German formulas and numbers are in PR #163. Detail: [localization-pari
|
||||
| Hindi | hi | none | 0% |
|
||||
| Arabic | ar | none (no RTL layout, no shaping) | 0% |
|
||||
| French | fr | none | 0% |
|
||||
| Portuguese | pt-BR | menus only | ~12% |
|
||||
| Portuguese | pt-BR | menus, File view, dialogs | ~43% |
|
||||
| Indonesian | id | none | 0% |
|
||||
| Japanese | ja | menus only | ~12% |
|
||||
| Japanese | ja | menus, File view, dialogs, messages | ~43% |
|
||||
| German | de | menus only | ~12% |
|
||||
| Korean | ko | menus only | ~12% |
|
||||
| Vietnamese | vi | none | 0% |
|
||||
@@ -132,6 +134,7 @@ Ranked; estimates in Opus 5.5 agent-hours. Detail and the full beta-gate list in
|
||||
|
||||
| Date | What landed |
|
||||
|---|---|
|
||||
| 2026-10-20 | Japanese interface catalog covers every key the Brazilian Portuguese catalog translates: the 398-label shared core plus 545 dialog, message, Backstage and menu strings (943 total, ~43% of ~2,200). A test parses `pt.rs`'s source, so the two catalogs stay in step |
|
||||
| 2026-10-12 | Rows auto-fit oversized fonts: opening a file and whole-row/column formatting grow non-custom rows to their tallest font (#833) |
|
||||
| 2026-10-12 | Number formats: parsing a format code is linear in its length (long runs of `[`, `,` or `/` no longer take quadratic time), and an unclosed `[` is a literal when splitting sections as well as when tokenizing (#810) |
|
||||
| 2026-10-12 | Number formats: a fraction denominator with 65,536 zeros no longer crashes; format codes are capped at 255 characters like Excel (longer codes display as General, `TEXT` gives `#VALUE!`) (#807) |
|
||||
|
||||
+6
-422
@@ -13,6 +13,7 @@ mod cs;
|
||||
mod de;
|
||||
mod es;
|
||||
mod fr;
|
||||
mod ja;
|
||||
mod ko;
|
||||
mod pt;
|
||||
mod ru;
|
||||
@@ -120,7 +121,7 @@ impl Language {
|
||||
let translated = match self {
|
||||
Self::En => None,
|
||||
Self::Es => es::translate(text),
|
||||
Self::Ja => JAPANESE.iter().find(|(english, _)| *english == text).map(|(_, translated)| *translated),
|
||||
Self::Ja => ja::translate(text),
|
||||
Self::Zh => zh::translate(text),
|
||||
Self::Ko => ko::translate(text),
|
||||
Self::Ru => ru::translate(text),
|
||||
@@ -173,435 +174,18 @@ pub fn set_current(ctx: &egui::Context, language: Language) {
|
||||
ctx.data_mut(|d| d.insert_temp(lang_key(), language));
|
||||
}
|
||||
|
||||
/// English label → Japanese. Keys are the exact interface strings (command ids, file names and
|
||||
/// document text are never translated); anything absent falls back to English.
|
||||
const JAPANESE: &[(&str, &str)] = &[
|
||||
("Paste", "貼り付け"),
|
||||
("Paste Values", "値の貼り付け"),
|
||||
("Paste Formulas", "数式の貼り付け"),
|
||||
("Paste Formatting", "書式の貼り付け"),
|
||||
("Transpose", "行列を入れ替え"),
|
||||
("Paste Link", "リンクの貼り付け"),
|
||||
("Paste Special…", "形式を選択して貼り付け…"),
|
||||
("Insert Copied Cells", "コピーしたセルの挿入"),
|
||||
("Insert Copied Cells…", "コピーしたセルの挿入…"),
|
||||
("Insert Cut Cells", "切り取ったセルの挿入"),
|
||||
("Insert Paste", "挿入貼り付け"),
|
||||
("Cut (⌘X)", "切り取り (⌘X)"),
|
||||
("Copy (⌘C)", "コピー (⌘C)"),
|
||||
("Format Painter (double-click to keep it on)", "書式のコピー/貼り付け (ダブルクリックで固定)"),
|
||||
("Bold (⌘B)", "太字 (⌘B)"),
|
||||
("Italic (⌘I)", "斜体 (⌘I)"),
|
||||
("Underline (⌘U)", "下線 (⌘U)"),
|
||||
("Double Underline", "二重下線"),
|
||||
("Strikethrough", "取り消し線"),
|
||||
("Underline", "下線"),
|
||||
("Increase Font Size", "フォントの拡大"),
|
||||
("Decrease Font Size", "フォントの縮小"),
|
||||
("Wrap Text", "折り返して全体を表示"),
|
||||
("Merge & Center", "セルを結合して中央揃え"),
|
||||
("Merge Cells", "セルの結合"),
|
||||
("Merge Across", "横方向に結合"),
|
||||
("Unmerge Cells", "セル結合の解除"),
|
||||
("Fill Color", "塗りつぶしの色"),
|
||||
("Font Color", "フォントの色"),
|
||||
("Borders", "罫線"),
|
||||
("Top\nAlign", "上揃え"),
|
||||
("Middle\nAlign", "中央揃え (縦)"),
|
||||
("Bottom\nAlign", "下揃え"),
|
||||
("Left", "左"),
|
||||
("Right", "右"),
|
||||
("Center", "中央"),
|
||||
("Horizontal", "水平"),
|
||||
("Vertical Text", "縦書き"),
|
||||
("Decrease Indent", "インデントを減らす"),
|
||||
("Increase Indent", "インデントを増やす"),
|
||||
("Orientation", "方向"),
|
||||
("Page Layout|Orientation", "印刷の向き"),
|
||||
("Angle Counterclockwise", "左回りに回転"),
|
||||
("Angle Clockwise", "右回りに回転"),
|
||||
("Rotate Text Up", "文字列を上に回転"),
|
||||
("Rotate Text Down", "文字列を下に回転"),
|
||||
("Accounting Number Format", "通貨表示形式"),
|
||||
("Percent Style", "パーセント表示"),
|
||||
("Comma Style", "桁区切りスタイル"),
|
||||
("Increase Decimal", "小数点以下の桁数を増やす"),
|
||||
("Decrease Decimal", "小数点以下の桁数を減らす"),
|
||||
("More Accounting Formats…", "その他の通貨表示形式…"),
|
||||
("Conditional\nFormatting", "条件付き書式"),
|
||||
("Conditional Formatting", "条件付き書式"),
|
||||
("Format\nas Table", "テーブルとして書式設定"),
|
||||
("Cell\nStyles", "セルのスタイル"),
|
||||
("Format Cells…", "セルの書式設定…"),
|
||||
("Format Cell Alignment…", "セルの配置…"),
|
||||
("Format\nPane", "書式ウィンドウ"),
|
||||
("Format", "書式"),
|
||||
("Insert", "挿入"),
|
||||
("Insert Cells…", "セルの挿入…"),
|
||||
("Delete", "削除"),
|
||||
("Delete Cells…", "セルの削除…"),
|
||||
("Insert Sheet Rows", "シートの行を挿入"),
|
||||
("Insert Sheet Columns", "シートの列を挿入"),
|
||||
("Delete Sheet Rows", "シートの行を削除"),
|
||||
("Delete Sheet Columns", "シートの列を削除"),
|
||||
("Row Height…", "行の高さ…"),
|
||||
("AutoFit Row Height", "行の高さを自動調整"),
|
||||
("Column Width…", "列の幅…"),
|
||||
("AutoFit Column Width", "列の幅を自動調整"),
|
||||
("Default Width…", "標準の幅…"),
|
||||
("Hide Rows", "行を表示しない"),
|
||||
("Unhide Rows", "再表示"),
|
||||
("Hide Columns", "列の表示/非表示"),
|
||||
("Unhide Columns", "再表示"),
|
||||
("Lock Cell", "セルのロック"),
|
||||
("Clear", "クリア"),
|
||||
("Clear All", "すべてクリア"),
|
||||
("Clear Formats", "書式のクリア"),
|
||||
("Clear Contents", "数式と値のクリア"),
|
||||
("Clear Comments and Notes", "コメントとメモのクリア"),
|
||||
("Clear Hyperlinks", "ハイパーリンクのクリア"),
|
||||
("AutoSum", "オート SUM"),
|
||||
("AutoSum (⌘⇧T)", "オート SUM (⌘⇧T)"),
|
||||
("Flash\nFill", "フラッシュ フィル"),
|
||||
("Flash Fill", "フラッシュ フィル"),
|
||||
("Fill", "フィル"),
|
||||
("Clear Print Area", "印刷範囲のクリア"),
|
||||
("Find &\nSelect", "検索と選択"),
|
||||
("Find…", "検索…"),
|
||||
("Replace…", "置換…"),
|
||||
("Go To…", "ジャンプ…"),
|
||||
("Go To Special…", "セルを選択…"),
|
||||
("PivotTable", "ピボットテーブル"),
|
||||
("Recommended\nCharts", "推奨グラフ"),
|
||||
("Table", "テーブル"),
|
||||
("Pictures", "画像"),
|
||||
("Shapes", "図形"),
|
||||
("Icons", "アイコン"),
|
||||
("Text\nBox", "テキスト ボックス"),
|
||||
("Comment", "コメント"),
|
||||
("New\nComment", "新しいコメント"),
|
||||
("New Note", "新しいメモ"),
|
||||
("Show/Hide Note", "メモの表示/非表示"),
|
||||
("Header &\nFooter", "ヘッダーとフッター"),
|
||||
("Text to\nColumns", "区切り位置"),
|
||||
("Link", "リンク"),
|
||||
("Symbol", "記号"),
|
||||
("Sparklines", "スパークライン"),
|
||||
("Checkbox", "チェックボックス"),
|
||||
("Insert checkboxes in the selected cells", "選択したセルにチェックボックスを挿入"),
|
||||
("Header & Footer", "ヘッダーとフッター"),
|
||||
("Draw with ink", "インクで描画"),
|
||||
("Eraser", "消しゴム"),
|
||||
("Ink to\nShape", "インクを図形に変換"),
|
||||
("Select\nObjects", "オブジェクトの選択"),
|
||||
("Themes", "テーマ"),
|
||||
("Margins", "余白"),
|
||||
("Left Margin", "左余白"),
|
||||
("Right Margin", "右余白"),
|
||||
("Top Margin", "上余白"),
|
||||
("Bottom Margin", "下余白"),
|
||||
("Header Margin", "ヘッダーの余白"),
|
||||
("Footer Margin", "フッターの余白"),
|
||||
("Size", "サイズ"),
|
||||
("Print\nArea", "印刷範囲"),
|
||||
("Set Print Area", "印刷範囲の設定"),
|
||||
("Breaks", "改ページ"),
|
||||
("Insert Page Break", "改ページの挿入"),
|
||||
("Remove Page Break", "改ページの解除"),
|
||||
("Reset All Page Breaks", "すべての改ページを解除"),
|
||||
("Print\nTitles", "印刷タイトル"),
|
||||
("Sheet\nRight-to-Left", "シートを右から左へ"),
|
||||
("Sheet Right-to-Left", "シートを右から左へ"),
|
||||
("Narrow", "狭い"),
|
||||
("Wide", "広い"),
|
||||
("Normal", "標準"),
|
||||
("Portrait", "縦"),
|
||||
("Landscape", "横"),
|
||||
("Custom Margins…", "ユーザー設定の余白…"),
|
||||
("Insert\nFunction", "関数の挿入"),
|
||||
("Name\nManager", "名前の管理"),
|
||||
("Define Name", "名前の定義"),
|
||||
("Use in Formula", "数式で使用"),
|
||||
("Create from Selection", "選択範囲から作成"),
|
||||
("Trace Precedents", "参照元のトレース"),
|
||||
("Trace Dependents", "参照先のトレース"),
|
||||
("Remove Arrows", "矢印の解除"),
|
||||
("Show Formulas", "数式の表示"),
|
||||
("Error Checking", "エラーチェック"),
|
||||
("Evaluate Formula", "数式の検証"),
|
||||
("Watch Window", "ウォッチ ウィンドウ"),
|
||||
("Calculation\nOptions", "計算方法の設定"),
|
||||
("Calculate Now", "再計算実行"),
|
||||
("Calculate Sheet", "シートの再計算"),
|
||||
("Automatic", "自動"),
|
||||
("Automatic Except for Data Tables", "データ テーブル以外は自動"),
|
||||
("Manual", "手動"),
|
||||
("Sort &\nFilter", "並べ替えとフィルター"),
|
||||
("Sort", "並べ替え"),
|
||||
("Sort A to Z", "昇順"),
|
||||
("Sort Z to A", "降順"),
|
||||
("Custom Sort…", "ユーザー設定の並べ替え…"),
|
||||
("Filter", "フィルター"),
|
||||
("Reapply", "再適用"),
|
||||
("Get Data\n(Text/CSV)", "データの取得 (テキスト/CSV)"),
|
||||
("Remove\nDuplicates", "重複の削除"),
|
||||
("Data\nValidation", "データの入力規則"),
|
||||
("Data Validation", "データの入力規則"),
|
||||
("Data Validation…", "データの入力規則…"),
|
||||
("Circle Invalid Data", "無効なデータをマーク"),
|
||||
("Clear Validation", "入力規則のクリア"),
|
||||
("Group", "グループ化"),
|
||||
("Ungroup", "グループ解除"),
|
||||
("Show Detail", "詳細データの表示"),
|
||||
("Hide Detail", "詳細を表示しない"),
|
||||
("Subtotal", "小計"),
|
||||
("Data\nAnalysis", "データ分析"),
|
||||
("Data Analysis", "データ分析"),
|
||||
("Solver", "ソルバー"),
|
||||
("What-If\nAnalysis", "What-If 分析"),
|
||||
("Data Table…", "データ テーブル…"),
|
||||
("Scenario Manager…", "シナリオ マネージャー…"),
|
||||
("Goal Seek…", "ゴール シーク…"),
|
||||
("Forecast\nSheet", "予測シート"),
|
||||
("Spelling", "スペルチェック"),
|
||||
("Check\nAccessibility", "アクセシビリティ チェック"),
|
||||
("Threaded Comments", "スレッド化されたコメント"),
|
||||
("Show\nComments", "コメントの表示"),
|
||||
("Previous", "前へ"),
|
||||
("Next", "次へ"),
|
||||
("Previous Comment", "前のコメント"),
|
||||
("Next Comment", "次のコメント"),
|
||||
("Show All Notes", "すべてのメモを表示"),
|
||||
("Convert to Comments", "コメントに変換"),
|
||||
("Protect\nWorkbook", "ブックの保護"),
|
||||
("Allow Edit\nRanges", "範囲の編集を許可"),
|
||||
("Allow Edit Ranges", "範囲の編集を許可"),
|
||||
("Unprotect\nSheet", "シート保護の解除"),
|
||||
("Protect Sheet…", "シートの保護…"),
|
||||
("Comments", "コメント"),
|
||||
("Notes", "メモ"),
|
||||
("Page Break\nPreview", "改ページ プレビュー"),
|
||||
("Page\nLayout", "ページ レイアウト"),
|
||||
("Formula Bar", "数式バー"),
|
||||
("Gridlines", "目盛線"),
|
||||
("Headings", "見出し"),
|
||||
("Zoom", "ズーム"),
|
||||
("100%", "100%"),
|
||||
("Zoom to\nSelection", "選択範囲を拡大"),
|
||||
("Freeze\nPanes", "ウィンドウ枠の固定"),
|
||||
("Freeze Panes", "ウィンドウ枠の固定"),
|
||||
("Freeze Top Row", "最上行の固定"),
|
||||
("Freeze First Column", "最左列の固定"),
|
||||
("Unfreeze Panes", "ウィンドウ枠固定の解除"),
|
||||
("Dark Mode", "ダーク モード"),
|
||||
("Display theme", "表示テーマ"),
|
||||
("Animations", "アニメーション"),
|
||||
(
|
||||
"Glide the selection outline to the cell you move to instead of jumping there",
|
||||
"選択範囲の枠を、移動先のセルまで滑らかに動かします(瞬時には切り替えません)",
|
||||
),
|
||||
("System", "システム"),
|
||||
("Light", "ライト"),
|
||||
("Dark", "ダーク"),
|
||||
("Interface language", "表示言語"),
|
||||
("Interface size", "表示サイズ"),
|
||||
("Auto", "自動"),
|
||||
("Drag to freeze columns", "ドラッグして列を固定"),
|
||||
("Drag to freeze rows", "ドラッグして行を固定"),
|
||||
("Command\nPalette", "コマンド パレット"),
|
||||
("Agent\nControl", "エージェント制御"),
|
||||
("Action\nJournal", "操作ジャーナル"),
|
||||
("About\nGridCraft", "GridCraft について"),
|
||||
("Share", "共有"),
|
||||
("Add Chart\nElement", "グラフ要素を追加"),
|
||||
("Change\nChart Type", "グラフの種類の変更"),
|
||||
("Switch\nRow/Column", "行/列の切り替え"),
|
||||
("Select\nData", "データの選択"),
|
||||
("Data Labels: None", "データ ラベル: なし"),
|
||||
("Data Labels: Show", "データ ラベル: 表示"),
|
||||
("Legend: None", "凡例: なし"),
|
||||
("Legend: Bottom", "凡例: 下"),
|
||||
("Legend: Top", "凡例: 上"),
|
||||
("Legend: Right", "凡例: 右"),
|
||||
("Gridlines: None", "目盛線: なし"),
|
||||
("Gridlines: Show", "目盛線: 表示"),
|
||||
("Chart\nTitle", "グラフ タイトル"),
|
||||
("Delete\nChart", "グラフの削除"),
|
||||
("Convert\nto Range", "範囲に変換"),
|
||||
("Table\nStyles", "テーブル スタイル"),
|
||||
("Top 10 Items", "上位 10 項目"),
|
||||
("Top 10%", "上位 10%"),
|
||||
("Bottom 10 Items", "下位 10 項目"),
|
||||
("Bottom 10%", "下位 10%"),
|
||||
("Above Average", "平均より上"),
|
||||
("Below Average", "平均より下"),
|
||||
("Clear Rules from Entire Sheet", "シート全体からルールをクリア"),
|
||||
("Clear Rules from Selected Cells", "選択したセルからルールをクリア"),
|
||||
("Constants", "定数"),
|
||||
("Data Bars", "データ バー"),
|
||||
("Color Scales", "カラー スケール"),
|
||||
("Icon Sets", "アイコン セット"),
|
||||
("Home", "ホーム"),
|
||||
("Draw", "描画"),
|
||||
("Page Layout", "ページ レイアウト"),
|
||||
("Formulas", "数式"),
|
||||
("Data", "データ"),
|
||||
("Review", "レビュー"),
|
||||
("View", "表示"),
|
||||
("Automate", "自動化"),
|
||||
("Table Design", "テーブル デザイン"),
|
||||
("Chart Design", "グラフ デザイン"),
|
||||
("Ready", "準備完了"),
|
||||
("Enter", "入力"),
|
||||
("Edit", "編集"),
|
||||
("Point", "ポイント"),
|
||||
("Calculate", "計算"),
|
||||
("Select destination and press Enter or choose Paste", "貼り付け先を選び、Enter キーを押すか [貼り付け] を選びます"),
|
||||
("General", "標準"),
|
||||
("Number", "数値"),
|
||||
("Currency", "通貨"),
|
||||
("Accounting", "会計"),
|
||||
("Date", "日付"),
|
||||
("Time", "時刻"),
|
||||
("Percentage", "パーセンテージ"),
|
||||
("Fraction", "分数"),
|
||||
("Scientific", "指数"),
|
||||
("Text", "文字列"),
|
||||
("Special", "特殊"),
|
||||
("Custom", "ユーザー設定"),
|
||||
("Short Date", "日付"),
|
||||
("Long Date", "長い日付"),
|
||||
("More Number Formats…", "その他の表示形式…"),
|
||||
("Financial", "財務"),
|
||||
("Logical", "論理"),
|
||||
("Date &\nTime", "日付/時刻"),
|
||||
("Lookup &\nReference", "検索/行列"),
|
||||
("Math &\nTrig", "数学/三角"),
|
||||
("More\nFunctions", "その他の関数"),
|
||||
("Sheet Options|View", "画面"),
|
||||
("Print", "印刷"),
|
||||
// Page Layout view and the Header & Footer tab.
|
||||
("Click to add data", "クリックしてデータを追加"),
|
||||
("Add header", "ヘッダーの追加"),
|
||||
("Add footer", "フッターの追加"),
|
||||
("(none)", "(なし)"),
|
||||
("Header", "ヘッダー"),
|
||||
("Footer", "フッター"),
|
||||
("Page\nNumber", "ページ\n番号"),
|
||||
("Number\nof Pages", "ページ数"),
|
||||
("Current\nDate", "現在の\n日付"),
|
||||
("Current\nTime", "現在の\n時刻"),
|
||||
("File\nPath", "ファイルの\nパス"),
|
||||
("File\nName", "ファイル名"),
|
||||
("Sheet\nName", "シート名"),
|
||||
("Go to\nHeader", "ヘッダーに\n移動"),
|
||||
("Go to\nFooter", "フッターに\n移動"),
|
||||
("Page Number", "ページ番号"),
|
||||
("Number of Pages", "ページ数"),
|
||||
("Current Date", "現在の日付"),
|
||||
("Current Time", "現在の時刻"),
|
||||
("File Path", "ファイルのパス"),
|
||||
("File Name", "ファイル名"),
|
||||
("Sheet Name", "シート名"),
|
||||
("Go to Header", "ヘッダーに移動"),
|
||||
("Different First Page", "先頭ページのみ別指定"),
|
||||
("Different Odd & Even Pages", "奇数/偶数ページ別指定"),
|
||||
("Go to Footer", "フッターに移動"),
|
||||
("Ruler", "ルーラー"),
|
||||
// File › Backstage view.
|
||||
("File", "ファイル"),
|
||||
("Back", "戻る"),
|
||||
("New", "新規"),
|
||||
("Open", "開く"),
|
||||
("Info", "情報"),
|
||||
("Save", "上書き保存"),
|
||||
("Save As", "名前を付けて保存"),
|
||||
("Export", "エクスポート"),
|
||||
("Close", "閉じる"),
|
||||
("Options", "オプション"),
|
||||
("Blank workbook", "空白のブック"),
|
||||
("Recent", "最近使ったアイテム"),
|
||||
("No recent workbooks yet.", "最近使ったブックはまだありません。"),
|
||||
("More workbooks", "その他のブック"),
|
||||
("Modified", "更新日時"),
|
||||
("Not available", "利用できません"),
|
||||
("Just now", "たった今"),
|
||||
("Yesterday", "昨日"),
|
||||
("{n} min ago", "{n} 分前"),
|
||||
("{n} h ago", "{n} 時間前"),
|
||||
("{n} days ago", "{n} 日前"),
|
||||
("{n} weeks ago", "{n} 週間前"),
|
||||
("{n} months ago", "{n} か月前"),
|
||||
("{n} years ago", "{n} 年前"),
|
||||
("Browse…", "参照…"),
|
||||
("Not saved yet", "まだ保存されていません"),
|
||||
("Location", "場所"),
|
||||
("Sheets", "シート"),
|
||||
("Protect Workbook", "ブックの保護"),
|
||||
(
|
||||
"Sheet structure is locked: sheets can't be added, moved, renamed or deleted.",
|
||||
"シートの構成はロックされています。シートの追加、移動、名前の変更、削除はできません。",
|
||||
),
|
||||
(
|
||||
"Lock the sheet structure so sheets can't be added, moved, renamed or deleted.",
|
||||
"シートの構成をロックして、シートの追加、移動、名前の変更、削除をできないようにします。",
|
||||
),
|
||||
("Properties", "プロパティ"),
|
||||
("Title", "タイトル"),
|
||||
("Subject", "件名"),
|
||||
("Author", "作成者"),
|
||||
("Company", "会社名"),
|
||||
("Keywords", "キーワード"),
|
||||
("Description", "説明"),
|
||||
("No workbook is open.", "ブックが開かれていません。"),
|
||||
("Save as type", "ファイルの種類"),
|
||||
("Excel Workbook (*.xlsx)", "Excel ブック (*.xlsx)"),
|
||||
("CSV UTF-8 (Comma delimited) (*.csv)", "CSV UTF-8 (コンマ区切り) (*.csv)"),
|
||||
("Web Page (*.html)", "Web ページ (*.html)"),
|
||||
("PDF (*.pdf)", "PDF ファイル (*.pdf)"),
|
||||
("Download", "ダウンロード"),
|
||||
(
|
||||
"A CSV file, web page or PDF is a copy: the workbook keeps its own file.",
|
||||
"CSV ファイル、Web ページ、PDF はコピーです。ブックは元のファイルのままです。",
|
||||
),
|
||||
("Save the workbook under another name or in another folder.", "ブックを別の名前または別のフォルダーに保存します。"),
|
||||
("Print Active Sheets", "作業中のシートを印刷"),
|
||||
("Print Entire Workbook", "ブック全体を印刷"),
|
||||
("Fit Sheet on One Page", "シートを 1 ページに印刷"),
|
||||
("Page Setup…", "ページ設定…"),
|
||||
("Page {page} of {pages}", "{page} / {pages} ページ"),
|
||||
("Nothing to print.", "印刷する内容がありません。"),
|
||||
("Previous page", "前のページ"),
|
||||
("Next page", "次のページ"),
|
||||
("Create PDF", "PDF の作成"),
|
||||
("Save the sheet as a PDF document that keeps its page layout.", "ページ レイアウトを保ったまま、シートを PDF ドキュメントとして保存します。"),
|
||||
("Change File Type", "ファイルの種類の変更"),
|
||||
("CSV (Comma delimited)", "CSV (コンマ区切り)"),
|
||||
("Save the active sheet as comma-separated text.", "作業中のシートをコンマ区切りのテキストとして保存します。"),
|
||||
("Web Page (.html)", "Web ページ (.html)"),
|
||||
("Save the workbook as a web page.", "ブックを Web ページとして保存します。"),
|
||||
("Options|General", "全般"),
|
||||
("Options|Save", "保存"),
|
||||
("Show formula bar", "数式バーを表示する"),
|
||||
("Enable AutoComplete for cell values", "セルの値にオートコンプリートを使用する"),
|
||||
("Save .xlsx workbooks automatically after every change", "変更のたびに .xlsx ブックを自動的に保存する"),
|
||||
("Workbook calculation", "ブックの計算"),
|
||||
("Enable iterative calculation", "反復計算を行う"),
|
||||
("Calculation settings are saved with the workbook.", "計算の設定はブックと共に保存されます。"),
|
||||
];
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn translations_are_unique_and_preserve_unknown_text() {
|
||||
for (i, (en, ja)) in JAPANESE.iter().enumerate() {
|
||||
for (i, (en, ja)) in ja::CORE.iter().enumerate() {
|
||||
assert!(!ja.is_empty());
|
||||
assert!(JAPANESE.iter().take(i).all(|(other, _)| en != other));
|
||||
assert!(ja::CORE.iter().take(i).all(|(other, _)| en != other));
|
||||
assert_eq!(Language::En.tr(en), en.rsplit_once('|').map_or(*en, |(_, label)| label));
|
||||
}
|
||||
for (english, _) in JAPANESE {
|
||||
for (english, _) in ja::CORE {
|
||||
assert!(zh::translate(english).is_some_and(|text| !text.is_empty()), "missing Simplified Chinese: {english}");
|
||||
assert!(ko::translate(english).is_some_and(|text| !text.is_empty()), "missing Korean: {english}");
|
||||
assert!(ru::translate(english).is_some_and(|text| !text.is_empty()), "missing Russian: {english}");
|
||||
@@ -687,7 +271,7 @@ mod tests {
|
||||
// `tr` returns a found translation as it is, so a catalog that keeps `context|` in its
|
||||
// value shows it on screen (File › Options read "Options|Général" in French).
|
||||
for language in Language::ALL {
|
||||
for (english, _) in JAPANESE {
|
||||
for (english, _) in ja::CORE {
|
||||
let shown = language.tr(english);
|
||||
assert!(!shown.contains('|'), "{} shows a context prefix for {english}: {shown}", language.code());
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+5
-3
@@ -1,6 +1,6 @@
|
||||
# Gaps
|
||||
|
||||
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-12 · **Change:** minor (rows auto-fit oversized fonts on open and whole-row/column formatting) · **Target:** Microsoft Excel (Microsoft 365)
|
||||
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-17 · **Change:** minor (the Japanese catalog covers the dialogs, messages and menus) · **Target:** Microsoft Excel (Microsoft 365)
|
||||
|
||||
Every known shortfall against Excel, one entry each, ranked by user impact (what blocks someone
|
||||
using GridCraft for real work first). This is the work list: pick from the top, check the open
|
||||
@@ -97,8 +97,10 @@ No alpha blockers: every core workflow passes the [alpha gate](roadmap.md#alpha-
|
||||
## After beta
|
||||
|
||||
### 11. No localization at all (L)
|
||||
- Ribbon-only catalog in five languages (#31, #104, #82; ~12% of strings each); dialogs, menus and
|
||||
messages English; en-US function names and separators (#45); German in PR #163. **Estimate:**
|
||||
- Catalog: ribbon-only in five languages (#31, #104, #82; ~12% of strings each), and 943 strings
|
||||
(~43%) in Japanese (10-17) and Brazilian Portuguese, including the dialog labels, messages, File
|
||||
view and menus. The remaining dialogs, menus and messages are English; en-US function names and
|
||||
separators (#45); German in PR #163. **Estimate:**
|
||||
100–165 h including #5. [localization-parity.md](localization-parity.md)
|
||||
|
||||
### 12. Get & Transform, external data, data model (F)
|
||||
|
||||
+16
-14
@@ -1,6 +1,6 @@
|
||||
# Localization parity
|
||||
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-19 · **Change:** minor (defined-name length limit counts characters, so long Arabic names are accepted; Table names are limited to 255 characters; right-to-left sheets in `.xls` files open right-to-left; text boxes and shapes keep right-to-left paragraph direction through XLSX save; Save as Web Page and copied HTML keep right-to-left; French and Serbian `context|label` translations no longer show the context) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (the Japanese catalog covers the dialogs, messages and menus) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4
|
||||
|
||||
Per-language status against Excel, which ships its UI in dozens of languages (Windows language
|
||||
packs cover 100+), with localized function names, argument separators, number and date formats,
|
||||
@@ -9,18 +9,19 @@ right-to-left sheets and full complex-script support. Part of
|
||||
|
||||
## Where we are (measured from source on `main`, after the 2026-10-10 merges)
|
||||
|
||||
- **A first catalog exists, for the ribbon only.** `crates/ui-egui/src/i18n.rs` (merged 10-10 in
|
||||
#31, #104, #82; German added 10-11) adds an interface-language preference that defaults to the
|
||||
system language (closes #20) and a View-tab switcher, with English-keyed lookup tables:
|
||||
Japanese 268 labels, Simplified Chinese, Korean, Russian, Brazilian Portuguese, German and Czech 266
|
||||
each. The tables are used by
|
||||
the ribbon, sheet tabs and widgets (`ribbon.rs`, `tabs.rs`, `widgets.rs`), the Format Cells
|
||||
dialog, every dialog title and the shared OK/Cancel buttons; the other dialogs, menus,
|
||||
context menus, task panes, status messages, command labels and function descriptions are still
|
||||
English literals. Untranslated labels fall back to English.
|
||||
- **A first catalog exists.** `crates/ui-egui/src/i18n.rs` (merged 10-10 in #31, #104, #82; German
|
||||
added 10-11) adds an interface-language preference that defaults to the system language (closes
|
||||
#20) and a View-tab switcher, with English-keyed lookup tables: Simplified Chinese, Korean,
|
||||
Russian, German and Czech 266–518 labels each, Brazilian Portuguese and Japanese 943 each. The
|
||||
tables are used by the ribbon, sheet tabs and widgets (`ribbon.rs`, `tabs.rs`, `widgets.rs`), the
|
||||
Format Cells dialog, every dialog title and the shared OK/Cancel buttons; Japanese and Portuguese
|
||||
also cover the other dialog labels, message boxes, Backstage/File-view items, template names and
|
||||
native menus (Japanese, 10-17: `i18n/ja.rs` keeps the shared 398-label core and adds 545 of those
|
||||
strings). The remaining menus, context menus, task panes, status messages, command labels and
|
||||
function descriptions are still English literals. Untranslated labels fall back to English.
|
||||
- **About 2,200 user-visible strings** in all (heuristic source scan: ~1,700 UI and command
|
||||
strings plus ~500 function descriptions), so each shipped language covers **~12%** (measured
|
||||
count / estimated total).
|
||||
strings plus ~500 function descriptions), so the ribbon-only languages cover **~12%** and
|
||||
Japanese and Portuguese **~43%** (measured count / estimated total).
|
||||
- **en-US only formulas and formats.** Function names, `,` argument separator, `.` decimal
|
||||
separator, en-US number and date formats (`crates/numfmt` says "en-US only"). Users ask for
|
||||
localized function names and `;` separators (#45). German with localized numbers and formulas
|
||||
@@ -54,9 +55,9 @@ separators, number/date formats, machine translation with agent review, and scri
|
||||
| Hindi | hi | 0 (0%) | no | Devanagari: **no shaping** | no | none | 12–18 h |
|
||||
| Arabic | ar | 0 (0%) | no | **no shaping, no RTL UI**; Sheet Right-to-Left mirrors the grid (#146) | no | none | 25–35 h |
|
||||
| French | fr | 0 (0%) | no | Latin: yes | no | none | 6–10 h |
|
||||
| Portuguese | pt-BR | 923 (~42%) | dialogs and tooltips (dialogs take effect with #669) | Latin: yes | no | menus, File view, dialogs | 2–4 h |
|
||||
| Portuguese | pt-BR | 943 (~43%) | dialogs and tooltips (dialogs take effect with #669) | Latin: yes | no | menus, File view, dialogs | 2–4 h |
|
||||
| Indonesian | id | 0 (0%) | no | Latin: yes | no | none | 5–8 h |
|
||||
| Japanese | ja | 268 (~12%) | no | CJK system-font fallback; IME unverified; no furigana display | no | menus only | 8–12 h |
|
||||
| Japanese | ja | 943 (~43%) | dialogs and messages | CJK system-font fallback; IME unverified; no furigana display | no | menus, File view, dialogs, messages | 3–5 h |
|
||||
| German | de | 266 (~12%) | no | Latin: yes | no | menus only | 4–8 h |
|
||||
| Korean | ko | 266 (~12%) | no | Hangul via the CJK fallback; IME unverified | no | menus only | 6–10 h |
|
||||
| Vietnamese | vi | 0 (0%) | no | Latin with stacked diacritics: unverified | no | none | 6–10 h |
|
||||
@@ -83,6 +84,7 @@ language (none so far) and of localized function names.
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-10-20 | minor | Japanese catalog (`i18n/ja.rs`) covers every key the Brazilian Portuguese catalog translates: the 398-label shared core moved verbatim plus 545 dialog, message, Backstage and menu strings — 943 keys, ~12% → ~43%. A test parses `pt.rs`'s source, so the two catalogs can't drift apart again. Portuguese re-measured at 943 (was 923) |
|
||||
| 2026-10-19 | minor | Defined-name length counts characters, not bytes: Arabic names up to 255 letters are accepted, and Create from Selection keeps long Arabic headers |
|
||||
| 2026-10-19 | minor | Table names are limited to 255 Unicode characters |
|
||||
| 2026-10-19 | minor | Right-to-left sheets in legacy `.xls` files (common in older Arabic workbooks) open right-to-left |
|
||||
|
||||
Reference in New Issue
Block a user