Integration: #1770 register Ukrainian (Language::Uk) and fill 573 missing keys with English text

This commit is contained in:
aiongg
2026-10-22 02:37:49 +00:00
parent ad1899e1ca
commit 8bfe310208
2 changed files with 586 additions and 2 deletions
+13 -2
View File
@@ -22,6 +22,7 @@ mod pt;
mod ru;
mod sr;
mod zh;
mod uk;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
@@ -42,11 +43,12 @@ pub enum Language {
Sr,
Pl,
It,
Uk,
}
impl Language {
pub const ALL: [Self; 14] = [
Self::En, Self::Es, Self::El, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr, Self::Pl, Self::It,
pub const ALL: [Self; 15] = [
Self::En, Self::Es, Self::El, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr, Self::Pl, Self::It, Self::Uk,
];
/// The language's own name, shown in the switcher.
@@ -66,6 +68,7 @@ impl Language {
Self::Sr => "Srpski",
Self::Pl => "Polski",
Self::It => "Italiano",
Self::Uk => "Українська",
}
}
@@ -86,6 +89,7 @@ impl Language {
Self::Sr => "sr",
Self::Pl => "pl",
Self::It => "it",
Self::Uk => "uk",
}
}
@@ -109,6 +113,7 @@ impl Language {
"sr" => Some(Self::Sr),
"pl" => Some(Self::Pl),
"it" => Some(Self::It),
"uk" => Some(Self::Uk),
_ => None,
}
}
@@ -150,6 +155,7 @@ impl Language {
Self::Sr => sr::translate(text),
Self::Pl => pl::translate(text),
Self::It => it::translate(text),
Self::Uk => uk::translate(text),
};
translated.unwrap_or_else(|| text.rsplit_once('|').map_or(text, |(_, label)| label))
}
@@ -218,6 +224,7 @@ mod tests {
assert!(sr::translate(english).is_some_and(|text| !text.is_empty()), "missing Serbian: {english}");
assert!(pl::translate(english).is_some_and(|text| !text.is_empty()), "missing Polish: {english}");
assert!(it::translate(english).is_some_and(|text| !text.is_empty()), "missing Italian: {english}");
assert!(uk::translate(english).is_some_and(|text| !text.is_empty()), "missing Ukrainian: {english}");
}
assert_eq!(Language::Ja.tr("Data"), "データ");
assert_eq!(Language::Zh.tr("Data"), "数据");
@@ -263,6 +270,8 @@ mod tests {
assert_eq!(Language::It.tr("Freeze Panes"), "Blocca riquadri");
assert_eq!(Language::It.tr("Page Layout|Orientation"), "Orientamento");
assert_eq!(Language::It.tr("Orientation"), "Orientamento");
assert_eq!(Language::Uk.tr("Data"), "Дані");
assert_eq!(Language::Uk.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::parse("xx"), None);
}
@@ -398,6 +407,8 @@ mod tests {
assert_eq!(Language::from_tag("it-IT"), Some(Language::It));
assert_eq!(Language::from_tag("it_CH.UTF-8"), Some(Language::It));
assert_eq!(Language::parse("it"), Some(Language::It));
assert_eq!(Language::from_tag("uk-XX"), Some(Language::Uk));
assert_eq!(Language::parse("uk"), Some(Language::Uk));
}
#[test]
+573
View File
@@ -410,6 +410,579 @@ pub(super) fn translate(text: &str) -> Option<&'static str> {
"Workbook calculation" => "Обчислення в книзі",
"Enable iterative calculation" => "Увімкнути ітеративні обчислення",
"Calculation settings are saved with the workbook." => "Параметри обчислень зберігаються разом із книгою.",
"OK" => "OK",
"Cancel" => "Cancel",
"Don't Save" => "Don't Save",
"Open…" => "Open…",
"Show password" => "Show password",
"Start a new workbook" => "Start a new workbook",
"Household Budget" => "Household Budget",
"Quarterly Sales Dashboard" => "Quarterly Sales Dashboard",
"Gradebook" => "Gradebook",
"this workbook" => "this workbook",
"This workbook" => "This workbook",
"Do you want to save the changes you made to {title}?" => "Do you want to save the changes you made to {title}?",
"Save a copy as .{format}" => "Save a copy as .{format}",
"Select a chart first." => "Select a chart first.",
"Text Box" => "Text Box",
"Select Data" => "Select Data",
"Row Height" => "Row Height",
"Column Width" => "Column Width",
"Standard Width" => "Standard Width",
"Rename Sheet" => "Rename Sheet",
"Move or Copy" => "Move or Copy",
"Protect Sheet" => "Protect Sheet",
"Protect Structure and Windows" => "Protect Structure and Windows",
"Unprotect Workbook" => "Unprotect Workbook",
"Unprotect Sheet" => "Unprotect Sheet",
"Password" => "Password",
"Unhide" => "Unhide",
"Paste Special" => "Paste Special",
"Series" => "Series",
"New Comment" => "New Comment",
"Insert Hyperlink" => "Insert Hyperlink",
"Create Sparklines" => "Create Sparklines",
"Page Setup" => "Page Setup",
"Convert Text to Columns" => "Convert Text to Columns",
"Remove Duplicates" => "Remove Duplicates",
"Goal Seek" => "Goal Seek",
"Create Forecast Worksheet" => "Create Forecast Worksheet",
"Solver Parameters" => "Solver Parameters",
"Solver Results" => "Solver Results",
"Edit Name" => "Edit Name",
"New Name" => "New Name",
"Format Cells" => "Format Cells",
"Formula Builder" => "Formula Builder",
"Find and Replace" => "Find and Replace",
"Go To" => "Go To",
"Insert Calculated Field" => "Insert Calculated Field",
"Go To Special" => "Go To Special",
"Name Manager" => "Name Manager",
"Conditional Formatting Rules Manager" => "Conditional Formatting Rules Manager",
"Search Commands" => "Search Commands",
"Agent Control" => "Agent Control",
"About GridCraft" => "About GridCraft",
"Insert Chart" => "Insert Chart",
"Select Data Source" => "Select Data Source",
"Action Journal" => "Action Journal",
"Macros" => "Macros",
"Workbook Statistics" => "Workbook Statistics",
"Accessibility" => "Accessibility",
"Chart Title" => "Chart Title",
"Place Picture in Cell" => "Place Picture in Cell",
"Place Picture over Cells" => "Place Picture over Cells",
"Pick From List" => "Pick From List",
"Save a Copy" => "Save a Copy",
"Save Changes?" => "Save Changes?",
"Shift cells right" => "Shift cells right",
"Shift cells down" => "Shift cells down",
"Shift cells left" => "Shift cells left",
"Shift cells up" => "Shift cells up",
"Entire row" => "Entire row",
"Entire column" => "Entire column",
"Row height (pixels):" => "Row height (pixels):",
"Column width (characters):" => "Column width (characters):",
"Standard column width (pixels):" => "Standard column width (pixels):",
"Name:" => "Name:",
"Before sheet (position, 0 = first):" => "Before sheet (position, 0 = first):",
"Create a copy" => "Create a copy",
"Sheets: {sheets}" => "Sheets: {sheets}",
"Password (optional):" => "Password (optional):",
"Password:" => "Password:",
"Allow all users of this sheet to:" => "Allow all users of this sheet to:",
"Format cells" => "Format cells",
"Format columns" => "Format columns",
"Format rows" => "Format rows",
"Insert rows" => "Insert rows",
"Delete rows" => "Delete rows",
"Use AutoFilter" => "Use AutoFilter",
" (password, unlocked)" => " (password, unlocked)",
" (password)" => " (password)",
"No ranges yet." => "No ranges yet.",
"Ranges that stay editable when the sheet is protected:" => "Ranges that stay editable when the sheet is protected:",
"Action" => "Action",
"Modify" => "Modify",
"Unlock with password" => "Unlock with password",
"Title:" => "Title:",
"Refers to cells:" => "Refers to cells:",
"Range password:" => "Range password:",
"New title (Modify):" => "New title (Modify):",
"Remove the password (Modify)" => "Remove the password (Modify)",
"'{file}' is protected." => "'{file}' is protected.",
"Unhide sheet:" => "Unhide sheet:",
"Hidden: {sheets}" => "Hidden: {sheets}",
"All" => "All",
"Formulas (F)" => "Formulas (F)",
"Values (V)" => "Values (V)",
"Formats (T)" => "Formats (T)",
"Comments and notes (C)" => "Comments and notes (C)",
"Validation" => "Validation",
"All except borders" => "All except borders",
"Column widths" => "Column widths",
"Formulas and number formats" => "Formulas and number formats",
"Values and number formats" => "Values and number formats",
"Operation" => "Operation",
"Add" => "Add",
"Subtract" => "Subtract",
"Multiply" => "Multiply",
"Divide" => "Divide",
"Skip blanks" => "Skip blanks",
"Transpose (E)" => "Transpose (E)",
"Series in" => "Series in",
"Columns" => "Columns",
"Rows" => "Rows",
"Type" => "Type",
"Linear" => "Linear",
"Growth" => "Growth",
"Date unit" => "Date unit",
"Day" => "Day",
"Weekday" => "Weekday",
"Month" => "Month",
"Year" => "Year",
"Step value:" => "Step value:",
"Stop value:" => "Stop value:",
"Start a conversation:" => "Start a conversation:",
"Note:" => "Note:",
"Display:" => "Display:",
"Link to (web address, e-mail or Sheet!A1):" => "Link to (web address, e-mail or Sheet!A1):",
"ScreenTip:" => "ScreenTip:",
"Data Range:" => "Data Range:",
"Location Range:" => "Location Range:",
"Markers" => "Markers",
"Footer:" => "Footer:",
"Left margin (in):" => "Left margin (in):",
"Right margin (in):" => "Right margin (in):",
"Top margin (in):" => "Top margin (in):",
"Bottom margin (in):" => "Bottom margin (in):",
"Header (in):" => "Header (in):",
"Footer (in):" => "Footer (in):",
"Tab" => "Tab",
"Semicolon" => "Semicolon",
"Comma" => "Comma",
"Space" => "Space",
"Other:" => "Other:",
"Treat consecutive delimiters as one" => "Treat consecutive delimiters as one",
"Destination:" => "Destination:",
"My data has headers" => "My data has headers",
"Columns (blank = all, e.g. A,C):" => "Columns (blank = all, e.g. A,C):",
"Timeline range (blank: first column of the selection):" => "Timeline range (blank: first column of the selection):",
"Values range (blank: second column of the selection):" => "Values range (blank: second column of the selection):",
"Confidence interval" => "Confidence interval",
"Confidence level (%):" => "Confidence level (%):",
"Seasonality (auto, 0 for none, or a season length):" => "Seasonality (auto, 0 for none, or a season length):",
"Fill missing points using" => "Fill missing points using",
"Interpolation" => "Interpolation",
"Zeros" => "Zeros",
"Aggregate duplicates using" => "Aggregate duplicates using",
"Average" => "Average",
"Count" => "Count",
"CountA" => "CountA",
"Max" => "Max",
"Median" => "Median",
"Min" => "Min",
"Sum" => "Sum",
"Product" => "Product",
"Include forecast statistics" => "Include forecast statistics",
"Chart" => "Chart",
"Line chart" => "Line chart",
"Column chart" => "Column chart",
"At each change in (column letter):" => "At each change in (column letter):",
"Use function" => "Use function",
"Add subtotal to (columns, e.g. C,D):" => "Add subtotal to (columns, e.g. C,D):",
"Magnification" => "Magnification",
"Custom (%):" => "Custom (%):",
"Scope (Workbook or sheet name):" => "Scope (Workbook or sheet name):",
"Comment:" => "Comment:",
"Refers to:" => "Refers to:",
"Allow" => "Allow",
"Any value" => "Any value",
"Whole number" => "Whole number",
"Decimal" => "Decimal",
"List" => "List",
"Text length" => "Text length",
"between" => "between",
"not between" => "not between",
"equal to" => "equal to",
"not equal to" => "not equal to",
"greater than" => "greater than",
"less than" => "less than",
"greater than or equal to" => "greater than or equal to",
"less than or equal to" => "less than or equal to",
"Minimum / Source / Formula:" => "Minimum / Source / Formula:",
"Maximum:" => "Maximum:",
"Ignore blank" => "Ignore blank",
"In-cell dropdown" => "In-cell dropdown",
"Input message:" => "Input message:",
"Error style" => "Error style",
"Stop" => "Stop",
"Warning" => "Warning",
"Information" => "Information",
"Error message:" => "Error message:",
"Format cells that are (value):" => "Format cells that are (value):",
"and:" => "and:",
"Format cells that contain the text:" => "Format cells that contain the text:",
"Format cells that contain a date occurring:" => "Format cells that contain a date occurring:",
"Today" => "Today",
"Tomorrow" => "Tomorrow",
"In the last 7 days" => "In the last 7 days",
"Last week" => "Last week",
"This week" => "This week",
"Next week" => "Next week",
"Last month" => "Last month",
"This month" => "This month",
"Next month" => "Next month",
"Format values where this formula is true:" => "Format values where this formula is true:",
"with" => "with",
"Light Red Fill with Dark Red Text" => "Light Red Fill with Dark Red Text",
"Yellow Fill with Dark Yellow Text" => "Yellow Fill with Dark Yellow Text",
"Green Fill with Dark Green Text" => "Green Fill with Dark Green Text",
"Light Red Fill" => "Light Red Fill",
"Red Text" => "Red Text",
"Red Border" => "Red Border",
"Formula:" => "Formula:",
"Select" => "Select",
"Blanks" => "Blanks",
"Errors" => "Errors",
"Numbers" => "Numbers",
"Current region" => "Current region",
"Last cell" => "Last cell",
"Visible cells only" => "Visible cells only",
"Conditional formats" => "Conditional formats",
"Data validation" => "Data validation",
"Horizontal axis title:" => "Horizontal axis title:",
"Vertical axis title:" => "Vertical axis title:",
"No picture selected" => "No picture selected",
"Picture file path (PNG or JPEG):" => "Picture file path (PNG or JPEG):",
"Description (optional):" => "Description (optional):",
"Fits inside the selected cell and moves with its content." => "Fits inside the selected cell and moves with its content.",
"Choose a PNG or JPEG no larger than 16 MB." => "Choose a PNG or JPEG no larger than 16 MB.",
"About" => "About",
"Contributors" => "Contributors",
"Models" => "Models",
"Version {version}" => "Version {version}",
"Join the ArtCraft Discord" => "Join the ArtCraft Discord",
"This workbook has no scripts or macros." => "This workbook has no scripts or macros.",
"(unnamed)" => "(unnamed)",
"— VBA project (preserved, not run)" => "— VBA project (preserved, not run)",
"— 1 step" => "— 1 step",
"— {steps} steps" => "— {steps} steps",
"Alignment" => "Alignment",
"Font" => "Font",
"Border" => "Border",
"Format Cells|Fill" => "Fill",
"Protection" => "Protection",
"Category:" => "Category:",
"Sample" => "Sample",
"Type (custom format code):" => "Type (custom format code):",
"Vertical" => "Vertical",
"Justify" => "Justify",
"Center Across Selection" => "Center Across Selection",
"Distributed" => "Distributed",
"Top" => "Top",
"Bottom" => "Bottom",
"Indent" => "Indent",
"Orientation (degrees)" => "Orientation (degrees)",
"Wrap text" => "Wrap text",
"Shrink to fit" => "Shrink to fit",
"Bold" => "Bold",
"Italic" => "Italic",
"None" => "None",
"Single" => "Single",
"Double" => "Double",
"Single Accounting" => "Single Accounting",
"Double Accounting" => "Double Accounting",
"Superscript" => "Superscript",
"Subscript" => "Subscript",
"Color:" => "Color:",
"Outline" => "Outline",
"Diagonal ↘" => "Diagonal ↘",
"Diagonal ↗" => "Diagonal ↗",
"none" => "none",
"thin" => "thin",
"medium" => "medium",
"thick" => "thick",
"dashed" => "dashed",
"dotted" => "dotted",
"double" => "double",
"Background Color:" => "Background Color:",
"Locked" => "Locked",
"Hidden" => "Hidden",
"Search:" => "Search:",
"e.g. lookup, average, date" => "e.g. lookup, average, date",
"Date & Time" => "Date & Time",
"Lookup & Reference" => "Lookup & Reference",
"Math & Trig" => "Math & Trig",
"Statistical" => "Statistical",
"Engineering" => "Engineering",
"Database" => "Database",
"Compatibility" => "Compatibility",
"Web" => "Web",
"Cube" => "Cube",
"Add-in and Automation" => "Add-in and Automation",
"Find" => "Find",
"Replace" => "Replace",
"Find what:" => "Find what:",
"Replace with:" => "Replace with:",
"Match case" => "Match case",
"Match entire cell contents" => "Match entire cell contents",
"Within workbook" => "Within workbook",
"Replace All" => "Replace All",
"Find All" => "Find All",
"Find Next" => "Find Next",
"All done. We made {count} replacements." => "All done. We made {count} replacements.",
"{count} cell(s) found" => "{count} cell(s) found",
"Reference:" => "Reference:",
"Special…" => "Special…",
"My list has headers" => "My list has headers",
"Sort by" => "Sort by",
"Then by" => "Then by",
"Cell Values" => "Cell Values",
"Cell Color" => "Cell Color",
"A to Z" => "A to Z",
"Z to A" => "Z to A",
"+ Add Level" => "+ Add Level",
"New…" => "New…",
"Edit…" => "Edit…",
"Name" => "Name",
"Value" => "Value",
"Refers To" => "Refers To",
"Scope" => "Scope",
"Workbook" => "Workbook",
"No names defined" => "No names defined",
"Recommended Charts" => "Recommended Charts",
"All Charts" => "All Charts",
"Clustered Column" => "Clustered Column",
"Stacked Column" => "Stacked Column",
"100% Stacked Column" => "100% Stacked Column",
"Clustered Bar" => "Clustered Bar",
"Stacked Bar" => "Stacked Bar",
"100% Stacked Bar" => "100% Stacked Bar",
"Line" => "Line",
"Line with Markers" => "Line with Markers",
"Stacked Line" => "Stacked Line",
"Pie" => "Pie",
"Doughnut" => "Doughnut",
"Area" => "Area",
"Stacked Area" => "Stacked Area",
"Scatter" => "Scatter",
"Scatter with Lines" => "Scatter with Lines",
"Radar" => "Radar",
"Histogram" => "Histogram",
"Waterfall" => "Waterfall",
"Funnel" => "Funnel",
"Combo" => "Combo",
"Chart data range:" => "Chart data range:",
"Legend Entries (Series)" => "Legend Entries (Series)",
"Series{n}" => "Series{n}",
"Keep" => "Keep",
"Remove" => "Remove",
"Horizontal (Category) Axis Labels:" => "Horizontal (Category) Axis Labels:",
"There are no conditional formatting rules on this sheet." => "There are no conditional formatting rules on this sheet.",
"applies to" => "applies to",
"Type a command, e.g. freeze, chart, bold…" => "Type a command, e.g. freeze, chart, bold…",
"Set cell:" => "Set cell:",
"To value:" => "To value:",
"By changing cell:" => "By changing cell:",
"Goal Seeking found a solution: {value}" => "Goal Seeking found a solution: {value}",
"Analysis Tools" => "Analysis Tools",
"Anova: Single Factor" => "Anova: Single Factor",
"Correlation" => "Correlation",
"Covariance" => "Covariance",
"Descriptive Statistics" => "Descriptive Statistics",
"Exponential Smoothing" => "Exponential Smoothing",
"F-Test Two-Sample for Variances" => "F-Test Two-Sample for Variances",
"Moving Average" => "Moving Average",
"Rank and Percentile" => "Rank and Percentile",
"Regression" => "Regression",
"t-Test: Paired Two Sample for Means" => "t-Test: Paired Two Sample for Means",
"t-Test: Two-Sample Assuming Equal Variances" => "t-Test: Two-Sample Assuming Equal Variances",
"t-Test: Two-Sample Assuming Unequal Variances" => "t-Test: Two-Sample Assuming Unequal Variances",
"Output options" => "Output options",
"Output Range:" => "Output Range:",
"New Worksheet Ply:" => "New Worksheet Ply:",
"Grouped By:" => "Grouped By:",
"Labels in first row" => "Labels in first row",
"Input Range:" => "Input Range:",
"Variable 1 Range:" => "Variable 1 Range:",
"Variable 2 Range:" => "Variable 2 Range:",
"Summary statistics" => "Summary statistics",
"Confidence Level for Mean (%), blank for none:" => "Confidence Level for Mean (%), blank for none:",
"Kth Largest (blank for none):" => "Kth Largest (blank for none):",
"Kth Smallest (blank for none):" => "Kth Smallest (blank for none):",
"Bin Range (blank for automatic bins):" => "Bin Range (blank for automatic bins):",
"Pareto (sorted histogram)" => "Pareto (sorted histogram)",
"Cumulative Percentage" => "Cumulative Percentage",
"Alpha:" => "Alpha:",
"Input Y Range:" => "Input Y Range:",
"Input X Range:" => "Input X Range:",
"Constant is Zero" => "Constant is Zero",
"Confidence Level (%):" => "Confidence Level (%):",
"Residuals" => "Residuals",
"Standardized Residuals" => "Standardized Residuals",
"Normal Probability" => "Normal Probability",
"Interval:" => "Interval:",
"Standard Errors" => "Standard Errors",
"Damping factor:" => "Damping factor:",
"Hypothesized Mean Difference:" => "Hypothesized Mean Difference:",
"Set Objective:" => "Set Objective:",
"To:" => "To:",
"Value Of:" => "Value Of:",
"By Changing Variable Cells:" => "By Changing Variable Cells:",
"Subject to the Constraints:" => "Subject to the Constraints:",
"Make Unconstrained Variables Non-Negative" => "Make Unconstrained Variables Non-Negative",
"Select a Solving Method:" => "Select a Solving Method:",
"GRG Nonlinear" => "GRG Nonlinear",
"Solve" => "Solve",
"Keep Solver Solution" => "Keep Solver Solution",
"Restore Original Values" => "Restore Original Values",
"The spelling check is complete for the entire sheet." => "The spelling check is complete for the entire sheet.",
"Not in Dictionary ({cell}):" => "Not in Dictionary ({cell}):",
"Suggestions:" => "Suggestions:",
"(No suggestions)" => "(No suggestions)",
"Ignore Once" => "Ignore Once",
"Add to Dictionary" => "Add to Dictionary",
"Change" => "Change",
"Change All" => "Change All",
"$ English (United States)" => "$ English (United States)",
"Add Chart Element" => "Add Chart Element",
"Align Left" => "Align Left",
"Align Right" => "Align Right",
"Bottom Align" => "Bottom Align",
"Calculate Now (F9)" => "Calculate Now (F9)",
"Calculate Sheet (⇧F9)" => "Calculate Sheet (⇧F9)",
"Calculation Options" => "Calculation Options",
"Cell Styles" => "Cell Styles",
"Change Chart Type" => "Change Chart Type",
"Check Accessibility" => "Check Accessibility",
"Clear Filter" => "Clear Filter",
"Column or Bar" => "Column or Bar",
"Comments pane" => "Comments pane",
"Convert the last ink stroke to a shape" => "Convert the last ink stroke to a shape",
"Convert to Range" => "Convert to Range",
"Copy" => "Copy",
"Custom Sort" => "Custom Sort",
"Cut" => "Cut",
"Define Name…" => "Define Name…",
"Delete Comment" => "Delete Comment",
"Delete Sheet" => "Delete Sheet",
"Delete chart" => "Delete chart",
"Delete…" => "Delete…",
"Dismiss" => "Dismiss",
"Down" => "Down",
"Edit chart title" => "Edit chart title",
"Erase ink strokes" => "Erase ink strokes",
"Every command run in this session (replayable)" => "Every command run in this session (replayable)",
"Expand formula bar" => "Expand formula bar",
"Filter (⌘⇧F)" => "Filter (⌘⇧F)",
"Filter by Selected Cell's Value" => "Filter by Selected Cell's Value",
"Find & Select" => "Find & Select",
"Flash Fill (⌘E)" => "Flash Fill (⌘E)",
"Forecast Sheet" => "Forecast Sheet",
"Forecast end (date or number; blank: a third of the history):" => "Forecast end (date or number; blank: a third of the history):",
"Format Chart pane" => "Format Chart pane",
"Format as Table" => "Format as Table",
"Hide" => "Hide",
"Hide Sheet" => "Hide Sheet",
"Hierarchy & more" => "Hierarchy & more",
"Highlighter" => "Highlighter",
"How agents drive GridCraft (MCP / control channel)" => "How agents drive GridCraft (MCP / control channel)",
"Import a text or CSV file" => "Import a text or CSV file",
"Insert Function" => "Insert Function",
"Insert Function (⇧F3)" => "Insert Function (⇧F3)",
"Insert Link (⌘K)" => "Insert Link (⌘K)",
"Insert Sheet" => "Insert Sheet",
"Insert Slicer" => "Insert Slicer",
"Insert a picture" => "Insert a picture",
"Insert a slicer to filter a table" => "Insert a slicer to filter a table",
"Insert an icon" => "Insert an icon",
"Insert…" => "Insert…",
"Line or Area" => "Line or Area",
"Link…" => "Link…",
"Macros and scripts in this workbook (Alt+F8)" => "Macros and scripts in this workbook (Alt+F8)",
"Middle Align" => "Middle Align",
"More commands" => "More commands",
"Move or Copy Sheet…" => "Move or Copy Sheet…",
"New sheet (⇧F11)" => "New sheet (⇧F11)",
"Next sheet" => "Next sheet",
"Page Breaks" => "Page Breaks",
"Paper Size" => "Paper Size",
"Paste (⌘V)" => "Paste (⌘V)",
"Pick From Drop-down List…" => "Pick From Drop-down List…",
"Pie or Doughnut" => "Pie or Doughnut",
"Previous sheet" => "Previous sheet",
"Print Area" => "Print Area",
"Print Titles" => "Print Titles",
"Protect Workbook structure" => "Protect Workbook structure",
"Redo (⌘Y)" => "Redo (⌘Y)",
"Save (⌘S)" => "Save (⌘S)",
"Scatter or Bubble" => "Scatter or Bubble",
"Search and run any command" => "Search and run any command",
"Search commands (⌘⇧Space)" => "Search commands (⌘⇧Space)",
"Select and move ink and shapes" => "Select and move ink and shapes",
"Series…" => "Series…",
"Share: export or save a copy" => "Share: export or save a copy",
"Show Formulas (⌃`)" => "Show Formulas (⌃`)",
"Slicer" => "Slicer",
"Sort & Filter" => "Sort & Filter",
"Spelling (F7)" => "Spelling (F7)",
"Statistic" => "Statistic",
"Switch Row/Column" => "Switch Row/Column",
"Table (⌘T)" => "Table (⌘T)",
"Table Styles" => "Table Styles",
"Text to Columns" => "Text to Columns",
"The output range already holds data. Replace it with the report?" => "The output range already holds data. Replace it with the report?",
"Top Align" => "Top Align",
"Undo (⌘Z)" => "Undo (⌘Z)",
"Undo list" => "Undo list",
"Unhide Sheet…" => "Unhide Sheet…",
"Up" => "Up",
"Version, contributors and the AI models that helped" => "Version, contributors and the AI models that helped",
"What-If Analysis" => "What-If Analysis",
"Zoom In" => "Zoom In",
"Zoom Out" => "Zoom Out",
"Zoom to 100%" => "Zoom to 100%",
"Zoom to Selection" => "Zoom to Selection",
"Zoom…" => "Zoom…",
"£ English (United Kingdom)" => "£ English (United Kingdom)",
"¥ Japanese" => "¥ Japanese",
"€ Euro" => "€ Euro",
"Tab|Insert" => "Insert",
"AutoSave" => "AutoSave",
"Insert\nSlicer" => "Insert\nSlicer",
"Pen\nBlack" => "Pen\nBlack",
"Pen\nBlue" => "Pen\nBlue",
"Pen\nRed" => "Pen\nRed",
"Protect\nSheet" => "Protect\nSheet",
"Watch\nWindow" => "Watch\nWindow",
"Workbook\nStatistics" => "Workbook\nStatistics",
"Options|Editing" => "Editing",
"PivotTable Fields" => "PivotTable Fields",
"Choose fields to add to report:" => "Choose fields to add to report:",
"Use a field's menu to move it between areas:" => "Use a field's menu to move it between areas:",
"Filters" => "Filters",
"Values" => "Values",
"Move to Row Labels" => "Move to Row Labels",
"Move to Column Labels" => "Move to Column Labels",
"Move to Report Filter" => "Move to Report Filter",
"Move to Values" => "Move to Values",
"Summarize by Sum" => "Summarize by Sum",
"Summarize by Count" => "Summarize by Count",
"Summarize by Average" => "Summarize by Average",
"Summarize by Max" => "Summarize by Max",
"Summarize by Min" => "Summarize by Min",
"Show as No Calculation" => "Show as No Calculation",
"Show as % of Grand Total" => "Show as % of Grand Total",
"Show as Running Total" => "Show as Running Total",
"Show as Rank" => "Show as Rank",
"Group by Years" => "Group by Years",
"Group by Quarters" => "Group by Quarters",
"Group by Months" => "Group by Months",
"Remove Field" => "Remove Field",
"Refresh" => "Refresh",
"Calculated Field…" => "Calculated Field…",
"Report Layout" => "Report Layout",
"Compact" => "Compact",
"Tabular" => "Tabular",
_ => return None,
})
}