Another project
1use bone_ui::strings::{Locale, StringKey, StringTable};
2
3pub const APP_TITLE: StringKey = StringKey::new("app.title");
4
5pub const RIBBON_LABEL: StringKey = StringKey::new("shell.ribbon");
6pub const RIBBON_TAB_FEATURES: StringKey = StringKey::new("shell.ribbon.tab.features");
7pub const RIBBON_TAB_SKETCH: StringKey = StringKey::new("shell.ribbon.tab.sketch");
8pub const RIBBON_TAB_SURFACES: StringKey = StringKey::new("shell.ribbon.tab.surfaces");
9pub const RIBBON_TAB_EVALUATE: StringKey = StringKey::new("shell.ribbon.tab.evaluate");
10pub const RIBBON_GROUP_ENTITIES: StringKey = StringKey::new("shell.ribbon.group.entities");
11pub const RIBBON_GROUP_RELATIONS: StringKey = StringKey::new("shell.ribbon.group.relations");
12pub const RIBBON_GROUP_DIMENSIONS: StringKey = StringKey::new("shell.ribbon.group.dimensions");
13pub const RIBBON_GROUP_EXTRUDE: StringKey = StringKey::new("shell.ribbon.group.extrude");
14pub const CONFIRM_ACCEPT: StringKey = StringKey::new("confirm.accept");
15pub const CONFIRM_CANCEL: StringKey = StringKey::new("confirm.cancel");
16
17pub const VIEW_FRONT: StringKey = StringKey::new("view.front");
18pub const VIEW_BACK: StringKey = StringKey::new("view.back");
19pub const VIEW_LEFT: StringKey = StringKey::new("view.left");
20pub const VIEW_RIGHT: StringKey = StringKey::new("view.right");
21pub const VIEW_TOP: StringKey = StringKey::new("view.top");
22pub const VIEW_BOTTOM: StringKey = StringKey::new("view.bottom");
23pub const VIEW_ISOMETRIC: StringKey = StringKey::new("view.isometric");
24pub const VIEW_NORMAL_TO: StringKey = StringKey::new("view.normal_to");
25pub const VIEW_CUBE: StringKey = StringKey::new("view.cube");
26pub const VIEW_HOME: StringKey = StringKey::new("view.home");
27pub const VIEW_CUBE_EDGE: StringKey = StringKey::new("view.cube.edge");
28pub const VIEW_CUBE_CORNER: StringKey = StringKey::new("view.cube.corner");
29pub const VIEW_SELECTOR: StringKey = StringKey::new("view.selector");
30pub const VIEW_CUBE_SET_HOME: StringKey = StringKey::new("view.cube.set_home");
31pub const VIEW_CUBE_FIT: StringKey = StringKey::new("view.cube.fit");
32pub const VIEW_CUBE_NORMAL_TO: StringKey = StringKey::new("view.cube.normal_to");
33pub const HEADS_UP_BAR: StringKey = StringKey::new("heads_up.bar");
34pub const HEADS_UP_ZOOM_FIT: StringKey = StringKey::new("heads_up.zoom_fit");
35pub const HEADS_UP_ZOOM_AREA: StringKey = StringKey::new("heads_up.zoom_area");
36pub const HEADS_UP_PREVIOUS_VIEW: StringKey = StringKey::new("heads_up.previous_view");
37pub const HEADS_UP_SECTION_VIEW: StringKey = StringKey::new("heads_up.section_view");
38pub const HEADS_UP_VIEW_ORIENTATION: StringKey = StringKey::new("heads_up.view_orientation");
39pub const HEADS_UP_DISPLAY_STYLE: StringKey = StringKey::new("heads_up.display_style");
40pub const HEADS_UP_HIDE_SHOW: StringKey = StringKey::new("heads_up.hide_show");
41pub const HEADS_UP_EDIT_APPEARANCE: StringKey = StringKey::new("heads_up.edit_appearance");
42pub const HEADS_UP_VIEW_SETTINGS: StringKey = StringKey::new("heads_up.view_settings");
43
44pub const TOOL_POINT: StringKey = StringKey::new("tool.point");
45pub const TOOL_LINE: StringKey = StringKey::new("tool.line");
46pub const TOOL_CENTERPOINT_ARC: StringKey = StringKey::new("tool.centerpoint_arc");
47pub const TOOL_TANGENT_ARC: StringKey = StringKey::new("tool.tangent_arc");
48pub const TOOL_THREE_POINT_ARC: StringKey = StringKey::new("tool.three_point_arc");
49pub const TOOL_CIRCLE: StringKey = StringKey::new("tool.circle");
50pub const TOOL_PERIMETER_CIRCLE: StringKey = StringKey::new("tool.perimeter_circle");
51pub const TOOL_CORNER_RECTANGLE: StringKey = StringKey::new("tool.corner_rectangle");
52pub const TOOL_CENTER_RECTANGLE: StringKey = StringKey::new("tool.center_rectangle");
53pub const TOOL_THREE_POINT_CORNER_RECTANGLE: StringKey =
54 StringKey::new("tool.three_point_corner_rectangle");
55pub const TOOL_THREE_POINT_CENTER_RECTANGLE: StringKey =
56 StringKey::new("tool.three_point_center_rectangle");
57pub const TOOL_PARALLELOGRAM: StringKey = StringKey::new("tool.parallelogram");
58
59pub const TOOL_EXTRUDED_BOSS_BASE: StringKey = StringKey::new("tool.extruded_boss_base");
60pub const TOOL_EXTRUDED_CUT: StringKey = StringKey::new("tool.extruded_cut");
61
62pub const TOOL_COINCIDENT: StringKey = StringKey::new("tool.coincident");
63pub const TOOL_HORIZONTAL: StringKey = StringKey::new("tool.horizontal");
64pub const TOOL_VERTICAL: StringKey = StringKey::new("tool.vertical");
65pub const TOOL_PARALLEL: StringKey = StringKey::new("tool.parallel");
66pub const TOOL_PERPENDICULAR: StringKey = StringKey::new("tool.perpendicular");
67pub const TOOL_TANGENT: StringKey = StringKey::new("tool.tangent");
68pub const TOOL_EQUAL: StringKey = StringKey::new("tool.equal");
69pub const TOOL_CONCENTRIC: StringKey = StringKey::new("tool.concentric");
70pub const TOOL_FIX: StringKey = StringKey::new("tool.fix");
71pub const TOOL_MIDPOINT: StringKey = StringKey::new("tool.midpoint");
72pub const TOOL_SYMMETRIC: StringKey = StringKey::new("tool.symmetric");
73
74pub const REL_HINT_ONE_LINE: StringKey = StringKey::new("rel.hint.one_line");
75pub const REL_HINT_TWO_LINES: StringKey = StringKey::new("rel.hint.two_lines");
76pub const REL_HINT_COINCIDENT: StringKey = StringKey::new("rel.hint.coincident");
77pub const REL_HINT_TWO_CIRCULAR: StringKey = StringKey::new("rel.hint.two_circular");
78pub const REL_HINT_TANGENT: StringKey = StringKey::new("rel.hint.tangent");
79pub const REL_HINT_EQUAL: StringKey = StringKey::new("rel.hint.equal");
80pub const REL_HINT_MIDPOINT: StringKey = StringKey::new("rel.hint.midpoint");
81pub const REL_HINT_ENTITY: StringKey = StringKey::new("rel.hint.entity");
82pub const REL_HINT_SYMMETRIC: StringKey = StringKey::new("rel.hint.symmetric");
83pub const PROPERTY_ROW_AXIS: StringKey = StringKey::new("property.row.axis");
84
85pub const TOOL_SMART_DIMENSION: StringKey = StringKey::new("tool.smart_dimension");
86pub const TOOL_RADIUS: StringKey = StringKey::new("tool.radius");
87pub const TOOL_DIAMETER: StringKey = StringKey::new("tool.diameter");
88
89pub const DIM_HINT_GENERIC: StringKey = StringKey::new("dim.hint.generic");
90pub const DIM_PLACEHOLDER_LENGTH: StringKey = StringKey::new("dim.placeholder.length");
91pub const DIM_PLACEHOLDER_ANGLE: StringKey = StringKey::new("dim.placeholder.angle");
92pub const DIM_CONFLICT_TITLE: StringKey = StringKey::new("dim.conflict.title");
93pub const DIM_CONFLICT_MESSAGE: StringKey = StringKey::new("dim.conflict.message");
94pub const DIM_CONFLICT_MAKE_DRIVEN: StringKey = StringKey::new("dim.conflict.make_driven");
95pub const DIM_CONFLICT_CANCEL: StringKey = StringKey::new("dim.conflict.cancel");
96
97pub const FEATURE_TREE_LABEL: StringKey = StringKey::new("shell.feature_tree");
98pub const FEATURE_HISTORY: StringKey = StringKey::new("feature.history");
99pub const FEATURE_SENSORS: StringKey = StringKey::new("feature.sensors");
100pub const FEATURE_ANNOTATIONS: StringKey = StringKey::new("feature.annotations");
101pub const FEATURE_SOLID_BODIES: StringKey = StringKey::new("feature.solid_bodies");
102pub const FEATURE_MATERIAL: StringKey = StringKey::new("feature.material");
103pub const FEATURE_ORIGIN: StringKey = StringKey::new("feature.origin");
104pub const FEATURE_PLANE_XY: StringKey = StringKey::new("feature.plane.xy");
105pub const FEATURE_PLANE_YZ: StringKey = StringKey::new("feature.plane.yz");
106pub const FEATURE_PLANE_ZX: StringKey = StringKey::new("feature.plane.zx");
107
108pub const FEATURE_CTX_EDIT_FEATURE: StringKey = StringKey::new("feature.ctx.edit_feature");
109pub const FEATURE_CTX_EDIT_SKETCH: StringKey = StringKey::new("feature.ctx.edit_sketch");
110pub const FEATURE_CTX_SUPPRESS: StringKey = StringKey::new("feature.ctx.suppress");
111pub const FEATURE_CTX_UNSUPPRESS: StringKey = StringKey::new("feature.ctx.unsuppress");
112pub const FEATURE_CTX_ROLLBACK: StringKey = StringKey::new("feature.ctx.rollback");
113pub const FEATURE_CTX_DELETE: StringKey = StringKey::new("feature.ctx.delete");
114pub const FEATURE_CTX_RELATIONSHIPS: StringKey = StringKey::new("feature.ctx.relationships");
115pub const FEATURE_REL_PARENTS: StringKey = StringKey::new("feature.rel.parents");
116pub const FEATURE_REL_CHILDREN: StringKey = StringKey::new("feature.rel.children");
117pub const FEATURE_REL_NONE: StringKey = StringKey::new("feature.rel.none");
118pub const FEATURE_REL_CLOSE: StringKey = StringKey::new("feature.rel.close");
119pub const WHATS_WRONG_TITLE: StringKey = StringKey::new("whats_wrong.title");
120pub const WHATS_WRONG_NONE: StringKey = StringKey::new("whats_wrong.none");
121pub const WHATS_WRONG_DANGLING: StringKey = StringKey::new("whats_wrong.dangling");
122pub const WHATS_WRONG_NON_PLANAR: StringKey = StringKey::new("whats_wrong.non_planar");
123pub const WHATS_WRONG_UPSTREAM: StringKey = StringKey::new("whats_wrong.upstream");
124pub const WHATS_WRONG_BUILD_FAILED: StringKey = StringKey::new("whats_wrong.build_failed");
125pub const WHATS_WRONG_REPAIRED: StringKey = StringKey::new("whats_wrong.repaired");
126pub const WHATS_WRONG_REATTACH: StringKey = StringKey::new("whats_wrong.reattach");
127
128pub const PROPERTY_PANE_LABEL: StringKey = StringKey::new("shell.property_pane");
129pub const LEFT_PANE_LABEL: StringKey = StringKey::new("shell.left_pane");
130pub const LEFT_PANE_TAB_CONFIGURATION: StringKey =
131 StringKey::new("shell.left_pane.tab.configuration");
132pub const LEFT_PANE_TAB_DIMENSION_EXPERT: StringKey =
133 StringKey::new("shell.left_pane.tab.dimension_expert");
134pub const LEFT_PANE_TAB_DISPLAY: StringKey = StringKey::new("shell.left_pane.tab.display");
135
136pub const DOC_TABS_LABEL: StringKey = StringKey::new("shell.doc_tabs");
137pub const DOC_TAB_MODEL: StringKey = StringKey::new("shell.doc_tabs.model");
138
139pub const STATUS_BAR_LABEL: StringKey = StringKey::new("shell.status_bar");
140pub const STATUS_READY: StringKey = StringKey::new("status.ready");
141pub const STATUS_SKETCH_ACTIVE: StringKey = StringKey::new("status.sketch_active");
142pub const STATUS_EXTRUDE_ACTIVE: StringKey = StringKey::new("status.extrude_active");
143pub const STATUS_UNITS_MM: StringKey = StringKey::new("status.units.mm");
144pub const STATUS_SKETCH_UNDER_DEFINED: StringKey = StringKey::new("status.sketch.under_defined");
145pub const STATUS_SKETCH_FULLY_DEFINED: StringKey = StringKey::new("status.sketch.fully_defined");
146pub const STATUS_SKETCH_OVER_DEFINED: StringKey = StringKey::new("status.sketch.over_defined");
147pub const STATUS_SKETCH_NO_SOLUTION: StringKey = StringKey::new("status.sketch.no_solution");
148pub const STATUS_SKETCH_INVALID: StringKey = StringKey::new("status.sketch.invalid");
149pub const STATUS_SKETCH_DANGLING: StringKey = StringKey::new("status.sketch.dangling");
150pub const STATUS_PANEL_TITLE: StringKey = StringKey::new("status.panel.title");
151pub const STATUS_PANEL_EMPTY: StringKey = StringKey::new("status.panel.empty");
152pub const STATUS_PANEL_KIND_POINT: StringKey = StringKey::new("status.panel.kind.point");
153pub const STATUS_PANEL_KIND_LINE: StringKey = StringKey::new("status.panel.kind.line");
154pub const STATUS_PANEL_KIND_ARC: StringKey = StringKey::new("status.panel.kind.arc");
155pub const STATUS_PANEL_KIND_CIRCLE: StringKey = StringKey::new("status.panel.kind.circle");
156pub const STATUS_PANEL_KIND_LINEAR: StringKey = StringKey::new("status.panel.kind.linear");
157pub const STATUS_PANEL_KIND_ANGULAR: StringKey = StringKey::new("status.panel.kind.angular");
158pub const STATUS_PANEL_KIND_RADIUS: StringKey = StringKey::new("status.panel.kind.radius");
159pub const STATUS_PANEL_KIND_DIAMETER: StringKey = StringKey::new("status.panel.kind.diameter");
160pub const STATUS_PANEL_KIND_UNKNOWN: StringKey = StringKey::new("status.panel.kind.unknown");
161pub const STATUS_PANEL_MORE: StringKey = StringKey::new("status.panel.more");
162pub const TOOLBAR_OVERFLOW: StringKey = StringKey::new("toolbar.overflow");
163
164pub const MENU_BAR_LABEL: StringKey = StringKey::new("shell.menu_bar");
165pub const MENU_FILE: StringKey = StringKey::new("menu.file");
166pub const MENU_EDIT: StringKey = StringKey::new("menu.edit");
167pub const MENU_VIEW: StringKey = StringKey::new("menu.view");
168pub const MENU_INSERT: StringKey = StringKey::new("menu.insert");
169pub const MENU_TOOLS: StringKey = StringKey::new("menu.tools");
170pub const MENU_SKETCH: StringKey = StringKey::new("menu.sketch");
171pub const MENU_SKETCH_EXIT: StringKey = StringKey::new("menu.sketch.exit");
172pub const MENU_WINDOW: StringKey = StringKey::new("menu.window");
173pub const MENU_HELP: StringKey = StringKey::new("menu.help");
174pub const MENU_FILE_NEW: StringKey = StringKey::new("menu.file.new");
175pub const MENU_FILE_OPEN: StringKey = StringKey::new("menu.file.open");
176pub const MENU_FILE_SAVE: StringKey = StringKey::new("menu.file.save");
177pub const MENU_FILE_SAVE_AS: StringKey = StringKey::new("menu.file.save_as");
178pub const MENU_FILE_QUIT: StringKey = StringKey::new("menu.file.quit");
179pub const MENU_FILE_IMPORT: StringKey = StringKey::new("menu.file.import");
180pub const MENU_FILE_EXPORT: StringKey = StringKey::new("menu.file.export");
181pub const MENU_FILE_EXPORT_STEP: StringKey = StringKey::new("menu.file.export.step");
182pub const FILE_PICKER_TITLE_OPEN: StringKey = StringKey::new("file_picker.title.open");
183pub const FILE_PICKER_TITLE_SAVE_AS: StringKey = StringKey::new("file_picker.title.save_as");
184pub const FILE_PICKER_TITLE_IMPORT: StringKey = StringKey::new("file_picker.title.import");
185pub const FILE_PICKER_TITLE_EXPORT: StringKey = StringKey::new("file_picker.title.export");
186pub const FILE_PICKER_OPEN: StringKey = StringKey::new("file_picker.open");
187pub const FILE_PICKER_SAVE: StringKey = StringKey::new("file_picker.save");
188pub const FILE_PICKER_IMPORT: StringKey = StringKey::new("file_picker.import");
189pub const FILE_PICKER_EXPORT: StringKey = StringKey::new("file_picker.export");
190pub const FILE_PICKER_NO_STEP_FILES: StringKey = StringKey::new("file_picker.step.empty");
191pub const FILE_PICKER_CANCEL: StringKey = StringKey::new("file_picker.cancel");
192pub const FILE_PICKER_LIST: StringKey = StringKey::new("file_picker.list");
193pub const FILE_PICKER_LIST_STEP: StringKey = StringKey::new("file_picker.list.step");
194pub const FILE_PICKER_FILENAME_PLACEHOLDER: StringKey =
195 StringKey::new("file_picker.filename_placeholder");
196pub const FILE_PICKER_FILENAME_PLACEHOLDER_STEP: StringKey =
197 StringKey::new("file_picker.filename_placeholder.step");
198pub const FILE_PICKER_DIR_EMPTY: StringKey = StringKey::new("file_picker.dir.empty");
199pub const FILE_OVERWRITE_TITLE: StringKey = StringKey::new("file.overwrite.title");
200pub const FILE_OVERWRITE_MESSAGE: StringKey = StringKey::new("file.overwrite.message");
201pub const FILE_OVERWRITE_TITLE_STEP: StringKey = StringKey::new("file.overwrite.title.step");
202pub const FILE_OVERWRITE_MESSAGE_STEP: StringKey = StringKey::new("file.overwrite.message.step");
203pub const FILE_OVERWRITE_REPLACE: StringKey = StringKey::new("file.overwrite.replace");
204pub const FILE_OVERWRITE_CANCEL: StringKey = StringKey::new("file.overwrite.cancel");
205pub const FILE_DISCARD_TITLE: StringKey = StringKey::new("file.discard.title");
206pub const FILE_DISCARD_MESSAGE: StringKey = StringKey::new("file.discard.message");
207pub const FILE_DISCARD_CONFIRM: StringKey = StringKey::new("file.discard.confirm");
208pub const FILE_DISCARD_CANCEL: StringKey = StringKey::new("file.discard.cancel");
209pub const FILE_IMPORT_REPLACE_TITLE: StringKey = StringKey::new("file.import_replace.title");
210pub const FILE_IMPORT_REPLACE_MESSAGE: StringKey = StringKey::new("file.import_replace.message");
211pub const FILE_IMPORT_REPLACE_CONFIRM: StringKey = StringKey::new("file.import_replace.confirm");
212pub const FILE_IMPORT_REPLACE_CANCEL: StringKey = StringKey::new("file.import_replace.cancel");
213pub const DEFAULT_DOCUMENT_NAME: StringKey = StringKey::new("file.default_document_name");
214pub const NOTIFY_SAVE_FAILED: StringKey = StringKey::new("notify.save_failed");
215pub const NOTIFY_LOAD_FAILED: StringKey = StringKey::new("notify.load_failed");
216pub const NOTIFY_SCAN_FAILED: StringKey = StringKey::new("notify.scan_failed");
217pub const NOTIFY_SAVED: StringKey = StringKey::new("notify.saved");
218pub const NOTIFY_IMPORTED: StringKey = StringKey::new("notify.imported");
219pub const NOTIFY_IMPORT_FAILED: StringKey = StringKey::new("notify.import_failed");
220pub const NOTIFY_EXPORTED: StringKey = StringKey::new("notify.exported");
221pub const NOTIFY_EXPORT_FAILED: StringKey = StringKey::new("notify.export_failed");
222pub const STEP_PROGRESS_TITLE_IMPORT: StringKey = StringKey::new("step.progress.title.import");
223pub const STEP_PROGRESS_TITLE_EXPORT: StringKey = StringKey::new("step.progress.title.export");
224pub const STEP_PROGRESS_CANCEL: StringKey = StringKey::new("step.progress.cancel");
225pub const NOTIFY_DISMISS: StringKey = StringKey::new("notify.dismiss");
226pub const MENU_EDIT_UNDO: StringKey = StringKey::new("menu.edit.undo");
227pub const MENU_EDIT_REDO: StringKey = StringKey::new("menu.edit.redo");
228pub const MENU_VIEW_ZOOM_FIT: StringKey = StringKey::new("menu.view.zoom_fit");
229pub const MENU_PLACEHOLDER_COMING_SOON: StringKey = StringKey::new("menu.placeholder.coming_soon");
230pub const MENU_TOOLS_OPTIONS: StringKey = StringKey::new("menu.tools.options");
231pub const MENU_TOOLS_KEYBOARD: StringKey = StringKey::new("menu.tools.keyboard");
232pub const KEYBOARD_DIALOG_TITLE: StringKey = StringKey::new("keyboard.dialog.title");
233pub const SETTINGS_DIALOG_TITLE: StringKey = StringKey::new("settings.dialog.title");
234pub const SETTINGS_PICK_APERTURE_LABEL: StringKey = StringKey::new("settings.pick_aperture.label");
235pub const SETTINGS_PICK_APERTURE_HINT: StringKey = StringKey::new("settings.pick_aperture.hint");
236pub const SETTINGS_REDUCE_MOTION_LABEL: StringKey = StringKey::new("settings.reduce_motion.label");
237pub const SETTINGS_RESET: StringKey = StringKey::new("settings.reset");
238pub const SETTINGS_CLOSE: StringKey = StringKey::new("settings.close");
239pub const HOTKEY_SECTION_HEADING: StringKey = StringKey::new("hotkey.section.heading");
240pub const HOTKEY_RECORDING_HINT: StringKey = StringKey::new("hotkey.recording.hint");
241pub const HOTKEY_RECORDING_PROMPT: StringKey = StringKey::new("hotkey.recording.prompt");
242pub const HOTKEY_UNBOUND_LABEL: StringKey = StringKey::new("hotkey.unbound.label");
243pub const HOTKEY_LABEL_SKETCH: StringKey = StringKey::new("hotkey.label.sketch");
244pub const HOTKEY_LABEL_ESCAPE: StringKey = StringKey::new("hotkey.label.escape");
245pub const HOTKEY_LABEL_SMART_DIMENSION: StringKey = StringKey::new("hotkey.label.smart_dimension");
246pub const HOTKEY_LABEL_TRIM: StringKey = StringKey::new("hotkey.label.trim");
247pub const HOTKEY_LABEL_EXTEND: StringKey = StringKey::new("hotkey.label.extend");
248pub const HOTKEY_LABEL_MIRROR: StringKey = StringKey::new("hotkey.label.mirror");
249pub const HOTKEY_LABEL_CONSTRUCTION_TOGGLE: StringKey =
250 StringKey::new("hotkey.label.construction_toggle");
251pub const HOTKEY_LABEL_UNDO: StringKey = StringKey::new("hotkey.label.undo");
252pub const HOTKEY_LABEL_REDO: StringKey = StringKey::new("hotkey.label.redo");
253pub const HOTKEY_LABEL_NEW: StringKey = StringKey::new("hotkey.label.new");
254pub const HOTKEY_LABEL_OPEN: StringKey = StringKey::new("hotkey.label.open");
255pub const HOTKEY_LABEL_SAVE: StringKey = StringKey::new("hotkey.label.save");
256pub const HOTKEY_LABEL_IMPORT: StringKey = StringKey::new("hotkey.label.import");
257pub const HOTKEY_LABEL_EXPORT: StringKey = StringKey::new("hotkey.label.export");
258pub const HOTKEY_LABEL_SELECT_ALL: StringKey = StringKey::new("hotkey.label.select_all");
259pub const HOTKEY_LABEL_DELETE_SELECTION: StringKey =
260 StringKey::new("hotkey.label.delete_selection");
261pub const HOTKEY_LABEL_ZOOM_FIT: StringKey = StringKey::new("hotkey.label.zoom_fit");
262pub const HOTKEY_LABEL_SHORTCUT_BAR: StringKey = StringKey::new("hotkey.label.shortcut_bar");
263pub const HOTKEY_LABEL_QUIT: StringKey = StringKey::new("hotkey.label.quit");
264pub const HOTKEY_LABEL_REBUILD: StringKey = StringKey::new("hotkey.label.rebuild");
265pub const HOTKEY_LABEL_FORCE_REBUILD: StringKey = StringKey::new("hotkey.label.force_rebuild");
266pub const NOTIFY_REATTACH_PICK: StringKey = StringKey::new("notify.reattach_pick");
267pub const NOTIFY_REATTACH_NON_PLANAR: StringKey = StringKey::new("notify.reattach_non_planar");
268pub const NOTIFY_COMING_SOON: StringKey = StringKey::new("notify.coming_soon");
269pub const NOTIFY_MIRROR_SELECTION_HINT: StringKey = StringKey::new("notify.mirror.selection_hint");
270pub const NOTIFY_HOTKEY_CONFLICT: StringKey = StringKey::new("notify.hotkey.conflict");
271pub const SHORTCUT_BAR_TITLE: StringKey = StringKey::new("shortcut_bar.title");
272
273pub const PROPERTY_PANE_NO_SELECTION: StringKey = StringKey::new("property.no_selection");
274pub const EXTRUDE_PROMPT_SELECT_SKETCH: StringKey = StringKey::new("extrude.prompt.select_sketch");
275pub const EXTRUDE_PROFILE_SELECTED: StringKey = StringKey::new("extrude.profile.selected");
276pub const FEATURE_HINT_EXIT_SKETCH: StringKey = StringKey::new("feature.hint.exit_sketch");
277pub const NOTIFY_EXTRUDE_NO_SKETCH: StringKey = StringKey::new("notify.extrude.no_sketch");
278pub const NOTIFY_EXTRUDE_FAILED: StringKey = StringKey::new("notify.extrude.failed");
279pub const PROPERTY_ROW_EXTRUDE_END: StringKey =
280 StringKey::new("property.row.extrude.end_condition");
281pub const PROPERTY_ROW_EXTRUDE_DEPTH: StringKey = StringKey::new("property.row.extrude.depth");
282pub const PROPERTY_ROW_EXTRUDE_DRAFT: StringKey = StringKey::new("property.row.extrude.draft");
283pub const PROPERTY_ROW_EXTRUDE_DRAFT_ANGLE: StringKey =
284 StringKey::new("property.row.extrude.draft_angle");
285pub const PROPERTY_ROW_EXTRUDE_DIRECTION_TWO: StringKey =
286 StringKey::new("property.row.extrude.direction_two");
287pub const PROPERTY_ROW_EXTRUDE_THIN: StringKey = StringKey::new("property.row.extrude.thin");
288pub const PROPERTY_ROW_EXTRUDE_MERGE: StringKey = StringKey::new("property.row.extrude.merge");
289pub const PROPERTY_PANE_EXTRUDE_TITLE: StringKey = StringKey::new("property.pane.extrude.title");
290pub const PROPERTY_GROUP_DIRECTION_1: StringKey = StringKey::new("property.group.direction_1");
291pub const PROPERTY_GROUP_FEATURE_SCOPE: StringKey = StringKey::new("property.group.feature_scope");
292pub const EXTRUDE_END_BLIND: StringKey = StringKey::new("extrude.end.blind");
293pub const EXTRUDE_END_MIDPLANE: StringKey = StringKey::new("extrude.end.midplane");
294pub const STATUS_EXTRUDE_VALID: StringKey = StringKey::new("status.extrude.valid");
295pub const STATUS_EXTRUDE_INVALID: StringKey = StringKey::new("status.extrude.invalid");
296pub const STATUS_EXTRUDE_DANGLING: StringKey = StringKey::new("status.extrude.dangling");
297pub const EXTRUDE_PANEL_TITLE: StringKey = StringKey::new("extrude.panel.title");
298pub const EXTRUDE_PANEL_UNSOLVED_SKETCH: StringKey =
299 StringKey::new("extrude.panel.unsolved_sketch");
300pub const EXTRUDE_PANEL_PROFILE_OPEN_LOOP: StringKey =
301 StringKey::new("extrude.panel.profile.open_loop");
302pub const EXTRUDE_PANEL_PROFILE_BRANCHING: StringKey =
303 StringKey::new("extrude.panel.profile.branching");
304pub const EXTRUDE_PANEL_PROFILE_SELF_INTERSECTING: StringKey =
305 StringKey::new("extrude.panel.profile.self_intersecting");
306pub const EXTRUDE_PANEL_PROFILE_ZERO_AREA: StringKey =
307 StringKey::new("extrude.panel.profile.zero_area");
308pub const EXTRUDE_PANEL_PROFILE_UNCONTAINED: StringKey =
309 StringKey::new("extrude.panel.profile.uncontained");
310pub const EXTRUDE_PANEL_PROFILE_OVERLAPPING: StringKey =
311 StringKey::new("extrude.panel.profile.overlapping");
312pub const EXTRUDE_PANEL_EMPTY_DEPTH: StringKey = StringKey::new("extrude.panel.empty_depth");
313pub const EXTRUDE_PANEL_SHELL_OPEN: StringKey = StringKey::new("extrude.panel.shell_open");
314pub const EXTRUDE_PANEL_DEGENERATE_EDGE: StringKey =
315 StringKey::new("extrude.panel.degenerate_edge");
316pub const EXTRUDE_PANEL_DANGLING_EDGE: StringKey = StringKey::new("extrude.panel.dangling_edge");
317pub const EXTRUDE_PANEL_DANGLING_VERTEX: StringKey =
318 StringKey::new("extrude.panel.dangling_vertex");
319pub const EXTRUDE_PANEL_UNSUPPORTED_DIRECTION: StringKey =
320 StringKey::new("extrude.panel.unsupported.direction");
321pub const EXTRUDE_PANEL_UNSUPPORTED_END: StringKey =
322 StringKey::new("extrude.panel.unsupported.end_condition");
323pub const EXTRUDE_PANEL_UNSUPPORTED_DRAFT: StringKey =
324 StringKey::new("extrude.panel.unsupported.draft");
325pub const EXTRUDE_PANEL_UNSUPPORTED_THIN: StringKey =
326 StringKey::new("extrude.panel.unsupported.thin");
327pub const EXTRUDE_PANEL_INTERNAL: StringKey = StringKey::new("extrude.panel.internal");
328pub const EXTRUDE_PANEL_DANGLING_REFERENCE: StringKey =
329 StringKey::new("extrude.panel.dangling_reference");
330pub const EXTRUDE_PANEL_NON_PLANAR_TARGET: StringKey =
331 StringKey::new("extrude.panel.non_planar_target");
332pub const EXTRUDE_PANEL_UPSTREAM_UNRESOLVED: StringKey =
333 StringKey::new("extrude.panel.upstream_unresolved");
334pub const PROPERTY_ROW_KIND: StringKey = StringKey::new("property.row.kind");
335pub const PROPERTY_ROW_X: StringKey = StringKey::new("property.row.x");
336pub const PROPERTY_ROW_Y: StringKey = StringKey::new("property.row.y");
337pub const PROPERTY_ROW_FROM: StringKey = StringKey::new("property.row.from");
338pub const PROPERTY_ROW_TO: StringKey = StringKey::new("property.row.to");
339pub const PROPERTY_ROW_CENTER: StringKey = StringKey::new("property.row.center");
340pub const PROPERTY_ROW_START: StringKey = StringKey::new("property.row.start");
341pub const PROPERTY_ROW_END: StringKey = StringKey::new("property.row.end");
342pub const PROPERTY_ROW_RADIUS: StringKey = StringKey::new("property.row.radius");
343pub const PROPERTY_ROW_CONSTRUCTION: StringKey = StringKey::new("property.row.construction");
344pub const PROPERTY_KIND_POINT: StringKey = StringKey::new("property.kind.point");
345pub const PROPERTY_KIND_LINE: StringKey = StringKey::new("property.kind.line");
346pub const PROPERTY_KIND_ARC: StringKey = StringKey::new("property.kind.arc");
347pub const PROPERTY_KIND_CIRCLE: StringKey = StringKey::new("property.kind.circle");
348pub const PROPERTY_VALUE_YES: StringKey = StringKey::new("property.value.yes");
349pub const PROPERTY_VALUE_NO: StringKey = StringKey::new("property.value.no");
350pub const PROPERTY_ROW_FIRST: StringKey = StringKey::new("property.row.first");
351pub const PROPERTY_ROW_SECOND: StringKey = StringKey::new("property.row.second");
352pub const PROPERTY_ROW_TARGET: StringKey = StringKey::new("property.row.target");
353pub const PROPERTY_ROW_POINT: StringKey = StringKey::new("property.row.point");
354pub const PROPERTY_ROW_LINE: StringKey = StringKey::new("property.row.line");
355pub const PROPERTY_ROW_DIM_KIND: StringKey = StringKey::new("property.row.dim.kind");
356pub const PROPERTY_ROW_DIM_DRIVES: StringKey = StringKey::new("property.row.dim.drives");
357pub const PROPERTY_ROW_DIM_LENGTH: StringKey = StringKey::new("property.row.dim.length");
358pub const PROPERTY_ROW_DIM_DIAMETER: StringKey = StringKey::new("property.row.dim.diameter");
359pub const PROPERTY_ROW_DIM_ANGLE: StringKey = StringKey::new("property.row.dim.angle");
360pub const PROPERTY_KIND_DIM_LINEAR: StringKey = StringKey::new("property.kind.dim.linear");
361pub const PROPERTY_KIND_DIM_RADIUS: StringKey = StringKey::new("property.kind.dim.radius");
362pub const PROPERTY_KIND_DIM_DIAMETER: StringKey = StringKey::new("property.kind.dim.diameter");
363pub const PROPERTY_KIND_DIM_ANGULAR: StringKey = StringKey::new("property.kind.dim.angular");
364pub const PROPERTY_VALUE_DRIVING: StringKey = StringKey::new("property.value.driving");
365pub const PROPERTY_VALUE_DRIVEN: StringKey = StringKey::new("property.value.driven");
366
367#[must_use]
368pub fn make_strings(locale: Locale) -> StringTable {
369 let mut table = StringTable::for_locale(locale);
370 let entries: &[(StringKey, &str)] = match locale {
371 Locale::EnUs => EN_US,
372 Locale::ArXb => AR_XB,
373 };
374 entries.iter().for_each(|(key, value)| {
375 table.insert(*key, (*value).to_owned());
376 });
377 table
378}
379
380const EN_US: &[(StringKey, &str)] = &[
381 (APP_TITLE, "Bone"),
382 (RIBBON_LABEL, "Ribbon"),
383 (RIBBON_TAB_FEATURES, "Features"),
384 (RIBBON_TAB_SKETCH, "Sketch"),
385 (RIBBON_TAB_SURFACES, "Surfaces"),
386 (RIBBON_TAB_EVALUATE, "Evaluate"),
387 (RIBBON_GROUP_ENTITIES, "Entities"),
388 (RIBBON_GROUP_RELATIONS, "Relations"),
389 (RIBBON_GROUP_DIMENSIONS, "Dimensions"),
390 (RIBBON_GROUP_EXTRUDE, "Extrude"),
391 (CONFIRM_ACCEPT, "Accept"),
392 (CONFIRM_CANCEL, "Cancel"),
393 (VIEW_FRONT, "Front"),
394 (VIEW_BACK, "Back"),
395 (VIEW_LEFT, "Left"),
396 (VIEW_RIGHT, "Right"),
397 (VIEW_TOP, "Top"),
398 (VIEW_BOTTOM, "Bottom"),
399 (VIEW_ISOMETRIC, "Isometric"),
400 (VIEW_NORMAL_TO, "Normal To"),
401 (VIEW_CUBE, "View Cube"),
402 (VIEW_HOME, "Home"),
403 (VIEW_CUBE_EDGE, "Edge View"),
404 (VIEW_CUBE_CORNER, "Corner View"),
405 (VIEW_SELECTOR, "View Orientation"),
406 (VIEW_CUBE_SET_HOME, "Set as Home"),
407 (VIEW_CUBE_FIT, "Fit to Window"),
408 (VIEW_CUBE_NORMAL_TO, "View Normal To"),
409 (HEADS_UP_BAR, "View Heads-Up Toolbar"),
410 (HEADS_UP_ZOOM_FIT, "Zoom to Fit"),
411 (HEADS_UP_ZOOM_AREA, "Zoom to Area"),
412 (HEADS_UP_PREVIOUS_VIEW, "Previous View"),
413 (HEADS_UP_SECTION_VIEW, "Section View"),
414 (HEADS_UP_VIEW_ORIENTATION, "View Orientation"),
415 (HEADS_UP_DISPLAY_STYLE, "Display Style"),
416 (HEADS_UP_HIDE_SHOW, "Hide/Show Items"),
417 (HEADS_UP_EDIT_APPEARANCE, "Edit Appearance"),
418 (HEADS_UP_VIEW_SETTINGS, "View Settings"),
419 (TOOL_POINT, "Point"),
420 (TOOL_LINE, "Line"),
421 (TOOL_CENTERPOINT_ARC, "Centerpoint Arc"),
422 (TOOL_TANGENT_ARC, "Tangent Arc"),
423 (TOOL_THREE_POINT_ARC, "3 Point Arc"),
424 (TOOL_CIRCLE, "Circle"),
425 (TOOL_PERIMETER_CIRCLE, "Perimeter Circle"),
426 (TOOL_CORNER_RECTANGLE, "Corner Rectangle"),
427 (TOOL_CENTER_RECTANGLE, "Center Rectangle"),
428 (
429 TOOL_THREE_POINT_CORNER_RECTANGLE,
430 "3 Point Corner Rectangle",
431 ),
432 (
433 TOOL_THREE_POINT_CENTER_RECTANGLE,
434 "3 Point Center Rectangle",
435 ),
436 (TOOL_PARALLELOGRAM, "Parallelogram"),
437 (TOOL_EXTRUDED_BOSS_BASE, "Extruded Boss/Base"),
438 (TOOL_EXTRUDED_CUT, "Extruded Cut"),
439 (TOOL_COINCIDENT, "Coincident"),
440 (TOOL_HORIZONTAL, "Horizontal"),
441 (TOOL_VERTICAL, "Vertical"),
442 (TOOL_PARALLEL, "Parallel"),
443 (TOOL_PERPENDICULAR, "Perpendicular"),
444 (TOOL_TANGENT, "Tangent"),
445 (TOOL_EQUAL, "Equal"),
446 (TOOL_CONCENTRIC, "Concentric"),
447 (TOOL_FIX, "Fix"),
448 (TOOL_MIDPOINT, "Midpoint"),
449 (TOOL_SYMMETRIC, "Symmetric"),
450 (REL_HINT_ONE_LINE, "Select a line"),
451 (REL_HINT_TWO_LINES, "Select two lines"),
452 (REL_HINT_COINCIDENT, "Select a point and another entity"),
453 (REL_HINT_TWO_CIRCULAR, "Select two arcs or circles"),
454 (REL_HINT_TANGENT, "Select a line and a curve, or two curves"),
455 (REL_HINT_EQUAL, "Select two lines or two curves"),
456 (REL_HINT_MIDPOINT, "Select a point and a line"),
457 (REL_HINT_ENTITY, "Select an entity"),
458 (REL_HINT_SYMMETRIC, "Select two points and a line"),
459 (PROPERTY_ROW_AXIS, "Axis"),
460 (TOOL_SMART_DIMENSION, "Smart Dimension"),
461 (TOOL_RADIUS, "Radius"),
462 (TOOL_DIAMETER, "Diameter"),
463 (
464 DIM_HINT_GENERIC,
465 "Select a line, two points, an arc, a circle, or two lines",
466 ),
467 (DIM_PLACEHOLDER_LENGTH, "value (mm)"),
468 (DIM_PLACEHOLDER_ANGLE, "value (deg)"),
469 (DIM_CONFLICT_TITLE, "Make Dimension Driven?"),
470 (
471 DIM_CONFLICT_MESSAGE,
472 "Adding this dimension will over-define the sketch.",
473 ),
474 (DIM_CONFLICT_MAKE_DRIVEN, "Make driven"),
475 (DIM_CONFLICT_CANCEL, "Cancel"),
476 (FEATURE_TREE_LABEL, "Feature Tree"),
477 (FEATURE_HISTORY, "History"),
478 (FEATURE_SENSORS, "Sensors"),
479 (FEATURE_ANNOTATIONS, "Annotations"),
480 (FEATURE_SOLID_BODIES, "Solid Bodies"),
481 (FEATURE_MATERIAL, "Material <not specified>"),
482 (FEATURE_ORIGIN, "Origin"),
483 (FEATURE_PLANE_XY, "Front Plane"),
484 (FEATURE_PLANE_YZ, "Right Plane"),
485 (FEATURE_PLANE_ZX, "Top Plane"),
486 (FEATURE_CTX_EDIT_FEATURE, "Edit Feature"),
487 (FEATURE_CTX_EDIT_SKETCH, "Edit Sketch"),
488 (FEATURE_CTX_SUPPRESS, "Suppress"),
489 (FEATURE_CTX_UNSUPPRESS, "Unsuppress"),
490 (FEATURE_CTX_ROLLBACK, "Rollback to Here"),
491 (FEATURE_CTX_DELETE, "Delete"),
492 (FEATURE_CTX_RELATIONSHIPS, "Parent/Child Relationships"),
493 (FEATURE_REL_PARENTS, "Parent Features"),
494 (FEATURE_REL_CHILDREN, "Child Features"),
495 (FEATURE_REL_NONE, "None"),
496 (FEATURE_REL_CLOSE, "Close"),
497 (WHATS_WRONG_TITLE, "What's Wrong"),
498 (WHATS_WRONG_NONE, "No rebuild errors"),
499 (WHATS_WRONG_DANGLING, "Dangling reference"),
500 (WHATS_WRONG_NON_PLANAR, "Sketch plane is not planar"),
501 (
502 WHATS_WRONG_UPSTREAM,
503 "Depends on a feature that failed to build",
504 ),
505 (WHATS_WRONG_BUILD_FAILED, "Geometry failed to build"),
506 (WHATS_WRONG_REPAIRED, "Reference repaired"),
507 (WHATS_WRONG_REATTACH, "Reattach"),
508 (PROPERTY_PANE_LABEL, "Property Manager"),
509 (LEFT_PANE_LABEL, "Left Pane"),
510 (LEFT_PANE_TAB_CONFIGURATION, "Configuration Manager"),
511 (LEFT_PANE_TAB_DIMENSION_EXPERT, "DimXpert Manager"),
512 (LEFT_PANE_TAB_DISPLAY, "Display Manager"),
513 (DOC_TABS_LABEL, "Document Tabs"),
514 (DOC_TAB_MODEL, "Model"),
515 (STATUS_BAR_LABEL, "Status Bar"),
516 (STATUS_READY, "Ready"),
517 (STATUS_SKETCH_ACTIVE, "Editing"),
518 (STATUS_EXTRUDE_ACTIVE, "Extrude"),
519 (STATUS_UNITS_MM, "MMGS"),
520 (STATUS_SKETCH_UNDER_DEFINED, "Under Defined"),
521 (STATUS_SKETCH_FULLY_DEFINED, "Fully Defined"),
522 (STATUS_SKETCH_OVER_DEFINED, "Over Defined"),
523 (STATUS_SKETCH_NO_SOLUTION, "No Solution Found"),
524 (STATUS_SKETCH_INVALID, "Invalid Solution Found"),
525 (STATUS_SKETCH_DANGLING, "Dangling"),
526 (STATUS_PANEL_TITLE, "Sketch Diagnostics"),
527 (STATUS_PANEL_EMPTY, "No conflicting constraints."),
528 (STATUS_PANEL_KIND_POINT, "Point"),
529 (STATUS_PANEL_KIND_LINE, "Line"),
530 (STATUS_PANEL_KIND_ARC, "Arc"),
531 (STATUS_PANEL_KIND_CIRCLE, "Circle"),
532 (STATUS_PANEL_KIND_LINEAR, "Linear Dimension"),
533 (STATUS_PANEL_KIND_ANGULAR, "Angular Dimension"),
534 (STATUS_PANEL_KIND_RADIUS, "Radius Dimension"),
535 (STATUS_PANEL_KIND_DIAMETER, "Diameter Dimension"),
536 (STATUS_PANEL_KIND_UNKNOWN, "Unknown"),
537 (STATUS_PANEL_MORE, "+ {n} more"),
538 (TOOLBAR_OVERFLOW, "More tools"),
539 (MENU_BAR_LABEL, "Menu Bar"),
540 (MENU_FILE, "File"),
541 (MENU_EDIT, "Edit"),
542 (MENU_VIEW, "View"),
543 (MENU_INSERT, "Insert"),
544 (MENU_TOOLS, "Tools"),
545 (MENU_SKETCH, "Sketch"),
546 (MENU_SKETCH_EXIT, "Exit Sketch"),
547 (MENU_WINDOW, "Window"),
548 (MENU_HELP, "Help"),
549 (MENU_FILE_NEW, "New"),
550 (MENU_FILE_OPEN, "Open..."),
551 (MENU_FILE_SAVE, "Save"),
552 (MENU_FILE_SAVE_AS, "Save As..."),
553 (MENU_FILE_QUIT, "Quit"),
554 (MENU_FILE_IMPORT, "Import..."),
555 (MENU_FILE_EXPORT, "Export"),
556 (MENU_FILE_EXPORT_STEP, "STEP (.step)"),
557 (FILE_PICKER_TITLE_OPEN, "Open Document"),
558 (FILE_PICKER_TITLE_SAVE_AS, "Save Document As"),
559 (FILE_PICKER_TITLE_IMPORT, "Import STEP"),
560 (FILE_PICKER_TITLE_EXPORT, "Export STEP"),
561 (FILE_PICKER_OPEN, "Open"),
562 (FILE_PICKER_SAVE, "Save"),
563 (FILE_PICKER_IMPORT, "Import"),
564 (FILE_PICKER_EXPORT, "Export"),
565 (FILE_PICKER_NO_STEP_FILES, "No STEP files in this folder"),
566 (FILE_PICKER_CANCEL, "Cancel"),
567 (FILE_PICKER_LIST, "Document folders"),
568 (FILE_PICKER_LIST_STEP, "STEP files"),
569 (FILE_PICKER_FILENAME_PLACEHOLDER, "Document name"),
570 (FILE_PICKER_FILENAME_PLACEHOLDER_STEP, "File name"),
571 (FILE_PICKER_DIR_EMPTY, "No documents in this folder"),
572 (FILE_OVERWRITE_TITLE, "Replace document?"),
573 (
574 FILE_OVERWRITE_MESSAGE,
575 "A document already exists at this location.",
576 ),
577 (FILE_OVERWRITE_TITLE_STEP, "Replace file?"),
578 (
579 FILE_OVERWRITE_MESSAGE_STEP,
580 "A file already exists at this location.",
581 ),
582 (FILE_OVERWRITE_REPLACE, "Replace"),
583 (FILE_OVERWRITE_CANCEL, "Cancel"),
584 (FILE_DISCARD_TITLE, "Discard unsaved changes?"),
585 (
586 FILE_DISCARD_MESSAGE,
587 "Continuing will permanently lose your unsaved edits.",
588 ),
589 (FILE_DISCARD_CONFIRM, "Discard"),
590 (FILE_DISCARD_CANCEL, "Keep editing"),
591 (FILE_IMPORT_REPLACE_TITLE, "Replace current document?"),
592 (
593 FILE_IMPORT_REPLACE_MESSAGE,
594 "The document changed while the import was running. Installing the import discards those changes.",
595 ),
596 (FILE_IMPORT_REPLACE_CONFIRM, "Install import"),
597 (FILE_IMPORT_REPLACE_CANCEL, "Keep current"),
598 (DEFAULT_DOCUMENT_NAME, "Untitled"),
599 (NOTIFY_SAVE_FAILED, "Save failed"),
600 (NOTIFY_LOAD_FAILED, "Open failed"),
601 (NOTIFY_SCAN_FAILED, "Could not read documents folder"),
602 (NOTIFY_SAVED, "Saved"),
603 (NOTIFY_IMPORTED, "Imported"),
604 (NOTIFY_IMPORT_FAILED, "Import failed"),
605 (NOTIFY_EXPORTED, "Exported"),
606 (NOTIFY_EXPORT_FAILED, "Export failed"),
607 (STEP_PROGRESS_TITLE_IMPORT, "Importing STEP"),
608 (STEP_PROGRESS_TITLE_EXPORT, "Exporting STEP"),
609 (STEP_PROGRESS_CANCEL, "Cancel"),
610 (NOTIFY_DISMISS, "Dismiss"),
611 (MENU_EDIT_UNDO, "Undo"),
612 (MENU_EDIT_REDO, "Redo"),
613 (MENU_VIEW_ZOOM_FIT, "Zoom to Fit"),
614 (MENU_PLACEHOLDER_COMING_SOON, "Coming Soon"),
615 (MENU_TOOLS_OPTIONS, "Options..."),
616 (MENU_TOOLS_KEYBOARD, "Customize Keyboard..."),
617 (KEYBOARD_DIALOG_TITLE, "Customize Keyboard"),
618 (SETTINGS_DIALOG_TITLE, "Selection options"),
619 (SETTINGS_PICK_APERTURE_LABEL, "Pick aperture"),
620 (
621 SETTINGS_PICK_APERTURE_HINT,
622 "How many pixels of slack the picker allows when clicking thin lines.",
623 ),
624 (SETTINGS_REDUCE_MOTION_LABEL, "Reduce motion"),
625 (SETTINGS_RESET, "Reset"),
626 (SETTINGS_CLOSE, "Close"),
627 (HOTKEY_SECTION_HEADING, "Keyboard shortcuts"),
628 (HOTKEY_RECORDING_HINT, "Click to record, Esc to cancel"),
629 (HOTKEY_RECORDING_PROMPT, "Press a key..."),
630 (HOTKEY_UNBOUND_LABEL, "Unbound"),
631 (HOTKEY_LABEL_SKETCH, "Sketch"),
632 (HOTKEY_LABEL_ESCAPE, "Cancel / Exit Sketch"),
633 (HOTKEY_LABEL_SMART_DIMENSION, "Smart Dimension"),
634 (HOTKEY_LABEL_TRIM, "Trim Entities"),
635 (HOTKEY_LABEL_EXTEND, "Extend Entities"),
636 (HOTKEY_LABEL_MIRROR, "Mirror Entities"),
637 (HOTKEY_LABEL_CONSTRUCTION_TOGGLE, "Toggle Construction"),
638 (HOTKEY_LABEL_UNDO, "Undo"),
639 (HOTKEY_LABEL_REDO, "Redo"),
640 (HOTKEY_LABEL_NEW, "New"),
641 (HOTKEY_LABEL_OPEN, "Open"),
642 (HOTKEY_LABEL_SAVE, "Save"),
643 (HOTKEY_LABEL_IMPORT, "Import STEP"),
644 (HOTKEY_LABEL_EXPORT, "Export STEP"),
645 (HOTKEY_LABEL_SELECT_ALL, "Select All"),
646 (HOTKEY_LABEL_DELETE_SELECTION, "Delete"),
647 (HOTKEY_LABEL_ZOOM_FIT, "Zoom to Fit"),
648 (HOTKEY_LABEL_SHORTCUT_BAR, "Shortcut Bar"),
649 (HOTKEY_LABEL_QUIT, "Quit"),
650 (HOTKEY_LABEL_REBUILD, "Rebuild"),
651 (HOTKEY_LABEL_FORCE_REBUILD, "Force Rebuild"),
652 (
653 NOTIFY_REATTACH_PICK,
654 "Pick a face to reattach the dangling reference",
655 ),
656 (NOTIFY_REATTACH_NON_PLANAR, "Pick a planar face to reattach"),
657 (NOTIFY_COMING_SOON, "Coming soon"),
658 (
659 NOTIFY_MIRROR_SELECTION_HINT,
660 "Select entities to mirror plus one axis line.",
661 ),
662 (
663 NOTIFY_HOTKEY_CONFLICT,
664 "Shortcut already used by another command.",
665 ),
666 (SHORTCUT_BAR_TITLE, "Shortcut Bar"),
667 (PROPERTY_PANE_NO_SELECTION, "Nothing selected"),
668 (EXTRUDE_PROMPT_SELECT_SKETCH, "Select a sketch to extrude"),
669 (EXTRUDE_PROFILE_SELECTED, "Sketch selected"),
670 (FEATURE_HINT_EXIT_SKETCH, "Exit the sketch to add a feature"),
671 (NOTIFY_EXTRUDE_NO_SKETCH, "Create a sketch first"),
672 (NOTIFY_EXTRUDE_FAILED, "Can't preview this extrude"),
673 (PROPERTY_ROW_EXTRUDE_END, "End Condition"),
674 (PROPERTY_ROW_EXTRUDE_DEPTH, "Depth"),
675 (PROPERTY_ROW_EXTRUDE_DRAFT, "Draft"),
676 (PROPERTY_ROW_EXTRUDE_DRAFT_ANGLE, "Draft Angle"),
677 (PROPERTY_ROW_EXTRUDE_DIRECTION_TWO, "Direction 2"),
678 (PROPERTY_ROW_EXTRUDE_THIN, "Thin Feature"),
679 (PROPERTY_ROW_EXTRUDE_MERGE, "Merge Result"),
680 (PROPERTY_PANE_EXTRUDE_TITLE, "Extrude"),
681 (PROPERTY_GROUP_DIRECTION_1, "Direction 1"),
682 (PROPERTY_GROUP_FEATURE_SCOPE, "Feature Scope"),
683 (EXTRUDE_END_BLIND, "Blind"),
684 (EXTRUDE_END_MIDPLANE, "Mid Plane"),
685 (STATUS_EXTRUDE_VALID, "Valid Solid"),
686 (STATUS_EXTRUDE_INVALID, "Invalid Solid"),
687 (STATUS_EXTRUDE_DANGLING, "Dangling"),
688 (EXTRUDE_PANEL_TITLE, "Extrude Diagnostics"),
689 (EXTRUDE_PANEL_UNSOLVED_SKETCH, "Sketch does not solve"),
690 (EXTRUDE_PANEL_PROFILE_OPEN_LOOP, "Profile has an open loop"),
691 (
692 EXTRUDE_PANEL_PROFILE_BRANCHING,
693 "Profile has a branching vertex",
694 ),
695 (
696 EXTRUDE_PANEL_PROFILE_SELF_INTERSECTING,
697 "Profile loop self-intersects",
698 ),
699 (EXTRUDE_PANEL_PROFILE_ZERO_AREA, "Profile has zero area"),
700 (
701 EXTRUDE_PANEL_PROFILE_UNCONTAINED,
702 "Profile loop lies outside the outer boundary",
703 ),
704 (
705 EXTRUDE_PANEL_PROFILE_OVERLAPPING,
706 "Profile inner loops overlap",
707 ),
708 (EXTRUDE_PANEL_EMPTY_DEPTH, "Extrude depth is zero"),
709 (EXTRUDE_PANEL_SHELL_OPEN, "Solid shell is not closed"),
710 (
711 EXTRUDE_PANEL_DEGENERATE_EDGE,
712 "Edge {n} collapses below tolerance",
713 ),
714 (EXTRUDE_PANEL_DANGLING_EDGE, "Edge {n} belongs to no loop"),
715 (
716 EXTRUDE_PANEL_DANGLING_VERTEX,
717 "Vertex {n} belongs to no loop",
718 ),
719 (
720 EXTRUDE_PANEL_UNSUPPORTED_DIRECTION,
721 "Extrude direction is not supported yet",
722 ),
723 (
724 EXTRUDE_PANEL_UNSUPPORTED_END,
725 "End condition is not supported yet",
726 ),
727 (
728 EXTRUDE_PANEL_UNSUPPORTED_DRAFT,
729 "Draft is not supported yet",
730 ),
731 (
732 EXTRUDE_PANEL_UNSUPPORTED_THIN,
733 "Thin feature is not supported yet",
734 ),
735 (EXTRUDE_PANEL_INTERNAL, "Internal kernel error"),
736 (
737 EXTRUDE_PANEL_DANGLING_REFERENCE,
738 "Sketch plane references a face that no longer exists",
739 ),
740 (
741 EXTRUDE_PANEL_NON_PLANAR_TARGET,
742 "Sketch plane target face is not planar",
743 ),
744 (
745 EXTRUDE_PANEL_UPSTREAM_UNRESOLVED,
746 "Depends on a feature that failed to build",
747 ),
748 (PROPERTY_ROW_KIND, "Type"),
749 (PROPERTY_ROW_X, "X"),
750 (PROPERTY_ROW_Y, "Y"),
751 (PROPERTY_ROW_FROM, "From"),
752 (PROPERTY_ROW_TO, "To"),
753 (PROPERTY_ROW_CENTER, "Center"),
754 (PROPERTY_ROW_START, "Start"),
755 (PROPERTY_ROW_END, "End"),
756 (PROPERTY_ROW_RADIUS, "Radius"),
757 (PROPERTY_ROW_CONSTRUCTION, "Construction"),
758 (PROPERTY_KIND_POINT, "Point"),
759 (PROPERTY_KIND_LINE, "Line"),
760 (PROPERTY_KIND_ARC, "Arc"),
761 (PROPERTY_KIND_CIRCLE, "Circle"),
762 (PROPERTY_VALUE_YES, "Yes"),
763 (PROPERTY_VALUE_NO, "No"),
764 (PROPERTY_ROW_FIRST, "First"),
765 (PROPERTY_ROW_SECOND, "Second"),
766 (PROPERTY_ROW_TARGET, "Target"),
767 (PROPERTY_ROW_POINT, "Point"),
768 (PROPERTY_ROW_LINE, "Line"),
769 (PROPERTY_ROW_DIM_KIND, "Type"),
770 (PROPERTY_ROW_DIM_DRIVES, "Drives"),
771 (PROPERTY_ROW_DIM_LENGTH, "Length"),
772 (PROPERTY_ROW_DIM_DIAMETER, "Diameter"),
773 (PROPERTY_ROW_DIM_ANGLE, "Angle"),
774 (PROPERTY_KIND_DIM_LINEAR, "Linear"),
775 (PROPERTY_KIND_DIM_RADIUS, "Radius"),
776 (PROPERTY_KIND_DIM_DIAMETER, "Diameter"),
777 (PROPERTY_KIND_DIM_ANGULAR, "Angular"),
778 (PROPERTY_VALUE_DRIVING, "Driving"),
779 (PROPERTY_VALUE_DRIVEN, "Driven"),
780];
781
782const AR_XB: &[(StringKey, &str)] = &[
783 (APP_TITLE, "[!! Bône !!]"),
784 (RIBBON_LABEL, "[!! ʁibbon !!]"),
785 (RIBBON_TAB_FEATURES, "[!! Featûres !!]"),
786 (RIBBON_TAB_SKETCH, "[!! Skêtch !!]"),
787 (RIBBON_TAB_SURFACES, "[!! Sûrfaces !!]"),
788 (RIBBON_TAB_EVALUATE, "[!! Évaluate !!]"),
789 (RIBBON_GROUP_ENTITIES, "[!! Entîtîes !!]"),
790 (RIBBON_GROUP_RELATIONS, "[!! Relâtions !!]"),
791 (RIBBON_GROUP_DIMENSIONS, "[!! Dîmensions !!]"),
792 (RIBBON_GROUP_EXTRUDE, "[!! Êxtrude !!]"),
793 (CONFIRM_ACCEPT, "[!! Accêpt !!]"),
794 (CONFIRM_CANCEL, "[!! Cancêl !!]"),
795 (VIEW_FRONT, "[!! Frônt !!]"),
796 (VIEW_BACK, "[!! Bâck !!]"),
797 (VIEW_LEFT, "[!! Lêft !!]"),
798 (VIEW_RIGHT, "[!! Rîght !!]"),
799 (VIEW_TOP, "[!! Tôp !!]"),
800 (VIEW_BOTTOM, "[!! Bôttom !!]"),
801 (VIEW_ISOMETRIC, "[!! Isômetric !!]"),
802 (VIEW_NORMAL_TO, "[!! Nôrmal Tô !!]"),
803 (VIEW_CUBE, "[!! Vîew Cûbe !!]"),
804 (VIEW_HOME, "[!! Hôme !!]"),
805 (VIEW_CUBE_EDGE, "[!! Êdge Vîew !!]"),
806 (VIEW_CUBE_CORNER, "[!! Côrner Vîew !!]"),
807 (VIEW_SELECTOR, "[!! Vîew Orientâtion !!]"),
808 (VIEW_CUBE_SET_HOME, "[!! Sêt as Hôme !!]"),
809 (VIEW_CUBE_FIT, "[!! Fît to Wîndow !!]"),
810 (VIEW_CUBE_NORMAL_TO, "[!! Vîew Nôrmal Tô !!]"),
811 (HEADS_UP_BAR, "[!! Vîew Hêads-Up Tôolbar !!]"),
812 (HEADS_UP_ZOOM_FIT, "[!! Zôom to Fît !!]"),
813 (HEADS_UP_ZOOM_AREA, "[!! Zôom to Ârea !!]"),
814 (HEADS_UP_PREVIOUS_VIEW, "[!! Prêvious Vîew !!]"),
815 (HEADS_UP_SECTION_VIEW, "[!! Sêction Vîew !!]"),
816 (HEADS_UP_VIEW_ORIENTATION, "[!! Vîew Orientâtion !!]"),
817 (HEADS_UP_DISPLAY_STYLE, "[!! Dîsplay Stŷle !!]"),
818 (HEADS_UP_HIDE_SHOW, "[!! Hîde/Shôw Îtems !!]"),
819 (HEADS_UP_EDIT_APPEARANCE, "[!! Êdit Appêarance !!]"),
820 (HEADS_UP_VIEW_SETTINGS, "[!! Vîew Sêttings !!]"),
821 (TOOL_POINT, "[!! Pôint !!]"),
822 (TOOL_LINE, "[!! Lîne !!]"),
823 (TOOL_CENTERPOINT_ARC, "[!! Cêntrepoint Arc !!]"),
824 (TOOL_TANGENT_ARC, "[!! Tângent Arc !!]"),
825 (TOOL_THREE_POINT_ARC, "[!! 3 Pôint Arc !!]"),
826 (TOOL_CIRCLE, "[!! Cîrcle !!]"),
827 (TOOL_PERIMETER_CIRCLE, "[!! Perîmeter Cîrcle !!]"),
828 (TOOL_CORNER_RECTANGLE, "[!! Côrner Rectàngle !!]"),
829 (TOOL_CENTER_RECTANGLE, "[!! Cênter Rectàngle !!]"),
830 (
831 TOOL_THREE_POINT_CORNER_RECTANGLE,
832 "[!! 3 Pôint Côrner Rectàngle !!]",
833 ),
834 (
835 TOOL_THREE_POINT_CENTER_RECTANGLE,
836 "[!! 3 Pôint Cênter Rectàngle !!]",
837 ),
838 (TOOL_PARALLELOGRAM, "[!! Parâllelôgram !!]"),
839 (TOOL_EXTRUDED_BOSS_BASE, "[!! Êxtruded Bôss/Base !!]"),
840 (TOOL_EXTRUDED_CUT, "[!! Êxtruded Cût !!]"),
841 (TOOL_COINCIDENT, "[!! Coincîdent !!]"),
842 (TOOL_HORIZONTAL, "[!! Horîzontal !!]"),
843 (TOOL_VERTICAL, "[!! Vêrtical !!]"),
844 (TOOL_PARALLEL, "[!! Parâllel !!]"),
845 (TOOL_PERPENDICULAR, "[!! Perpendîcular !!]"),
846 (TOOL_TANGENT, "[!! Tângent !!]"),
847 (TOOL_EQUAL, "[!! Équal !!]"),
848 (TOOL_CONCENTRIC, "[!! Concêntric !!]"),
849 (TOOL_FIX, "[!! Fîx !!]"),
850 (TOOL_MIDPOINT, "[!! Mîdpoint !!]"),
851 (TOOL_SYMMETRIC, "[!! Symmêtric !!]"),
852 (REL_HINT_ONE_LINE, "[!! Sêlect a lîne !!]"),
853 (REL_HINT_TWO_LINES, "[!! Sêlect twô lînes !!]"),
854 (
855 REL_HINT_COINCIDENT,
856 "[!! Sêlect a pôint ând anôther êntity !!]",
857 ),
858 (REL_HINT_TWO_CIRCULAR, "[!! Sêlect twô ârcs ôr cîrcles !!]"),
859 (
860 REL_HINT_TANGENT,
861 "[!! Sêlect a lîne ând a cûrve, ôr twô cûrves !!]",
862 ),
863 (REL_HINT_EQUAL, "[!! Sêlect twô lînes ôr twô cûrves !!]"),
864 (REL_HINT_MIDPOINT, "[!! Sêlect a pôint ând a lîne !!]"),
865 (REL_HINT_ENTITY, "[!! Sêlect an êntity !!]"),
866 (REL_HINT_SYMMETRIC, "[!! Sêlect twô pôints ând a lîne !!]"),
867 (PROPERTY_ROW_AXIS, "[!! Âxis !!]"),
868 (TOOL_SMART_DIMENSION, "[!! Smârt Dimensiôn !!]"),
869 (TOOL_RADIUS, "[!! Râdius !!]"),
870 (TOOL_DIAMETER, "[!! Dîameter !!]"),
871 (
872 DIM_HINT_GENERIC,
873 "[!! Sêlect a lîne, twô pôints, an ârc, a cîrcle, ôr twô lînes !!]",
874 ),
875 (DIM_PLACEHOLDER_LENGTH, "[!! valûe (mm) !!]"),
876 (DIM_PLACEHOLDER_ANGLE, "[!! valûe (dêg) !!]"),
877 (DIM_CONFLICT_TITLE, "[!! Mâke Dîmension Drîven? !!]"),
878 (
879 DIM_CONFLICT_MESSAGE,
880 "[!! Âdding this dîmension will over-defîne the skêtch. !!]",
881 ),
882 (DIM_CONFLICT_MAKE_DRIVEN, "[!! Mâke drîven !!]"),
883 (DIM_CONFLICT_CANCEL, "[!! Cancêl !!]"),
884 (FEATURE_TREE_LABEL, "[!! Featûre Tree !!]"),
885 (FEATURE_HISTORY, "[!! Hîstory !!]"),
886 (FEATURE_SENSORS, "[!! Sênsors !!]"),
887 (FEATURE_ANNOTATIONS, "[!! Annôtations !!]"),
888 (FEATURE_SOLID_BODIES, "[!! Sôlid Bôdies !!]"),
889 (FEATURE_MATERIAL, "[!! Matérial <nôt specîfied> !!]"),
890 (FEATURE_ORIGIN, "[!! Orîgin !!]"),
891 (FEATURE_PLANE_XY, "[!! Front Plàne !!]"),
892 (FEATURE_PLANE_YZ, "[!! Rîght Plàne !!]"),
893 (FEATURE_PLANE_ZX, "[!! Tôp Plàne !!]"),
894 (FEATURE_CTX_EDIT_FEATURE, "[!! Édit Featûre !!]"),
895 (FEATURE_CTX_EDIT_SKETCH, "[!! Édit Skétch !!]"),
896 (FEATURE_CTX_SUPPRESS, "[!! Suppréss !!]"),
897 (FEATURE_CTX_UNSUPPRESS, "[!! Unsuppréss !!]"),
898 (FEATURE_CTX_ROLLBACK, "[!! Rôllback to Hére !!]"),
899 (FEATURE_CTX_DELETE, "[!! Delête !!]"),
900 (FEATURE_CTX_RELATIONSHIPS, "[!! Parént/Chîld Relâtions !!]"),
901 (FEATURE_REL_PARENTS, "[!! Parént Featûres !!]"),
902 (FEATURE_REL_CHILDREN, "[!! Chîld Featûres !!]"),
903 (FEATURE_REL_NONE, "[!! Nône !!]"),
904 (FEATURE_REL_CLOSE, "[!! Clôse !!]"),
905 (WHATS_WRONG_TITLE, "[!! Whât's Wrông !!]"),
906 (WHATS_WRONG_NONE, "[!! Nô rebûild errôrs !!]"),
907 (WHATS_WRONG_DANGLING, "[!! Dânglîng reférence !!]"),
908 (WHATS_WRONG_NON_PLANAR, "[!! Plâne nôt plânar !!]"),
909 (WHATS_WRONG_UPSTREAM, "[!! Dêpends ôn fâiled featûre !!]"),
910 (WHATS_WRONG_BUILD_FAILED, "[!! Geômetry fâiled !!]"),
911 (WHATS_WRONG_REPAIRED, "[!! Reférence repâired !!]"),
912 (WHATS_WRONG_REATTACH, "[!! Reattâch !!]"),
913 (PROPERTY_PANE_LABEL, "[!! Propérty Mânager !!]"),
914 (LEFT_PANE_LABEL, "[!! Léft Pâne !!]"),
915 (LEFT_PANE_TAB_CONFIGURATION, "[!! Cônfig Mânager !!]"),
916 (LEFT_PANE_TAB_DIMENSION_EXPERT, "[!! DimXpêrt Mânager !!]"),
917 (LEFT_PANE_TAB_DISPLAY, "[!! Display Mânager !!]"),
918 (DOC_TABS_LABEL, "[!! Dôc Tâbs !!]"),
919 (DOC_TAB_MODEL, "[!! Môdel !!]"),
920 (STATUS_BAR_LABEL, "[!! Statûs Bar !!]"),
921 (STATUS_READY, "[!! Réady !!]"),
922 (STATUS_SKETCH_ACTIVE, "[!! Edîting !!]"),
923 (STATUS_EXTRUDE_ACTIVE, "[!! Êxtrude !!]"),
924 (STATUS_UNITS_MM, "[!! MMGS !!]"),
925 (STATUS_SKETCH_UNDER_DEFINED, "[!! Ûnder Defîned !!]"),
926 (STATUS_SKETCH_FULLY_DEFINED, "[!! Fûlly Defîned !!]"),
927 (STATUS_SKETCH_OVER_DEFINED, "[!! Ôver Defîned !!]"),
928 (STATUS_SKETCH_NO_SOLUTION, "[!! Nô Solûtion Foûnd !!]"),
929 (STATUS_SKETCH_INVALID, "[!! Invâlid Solûtion Foûnd !!]"),
930 (STATUS_SKETCH_DANGLING, "[!! Dânglîng !!]"),
931 (STATUS_PANEL_TITLE, "[!! Skêtch Diâgnostics !!]"),
932 (STATUS_PANEL_EMPTY, "[!! Nô conflîcting constrâints !!]"),
933 (STATUS_PANEL_KIND_POINT, "[!! Pôint !!]"),
934 (STATUS_PANEL_KIND_LINE, "[!! Lîne !!]"),
935 (STATUS_PANEL_KIND_ARC, "[!! Ârc !!]"),
936 (STATUS_PANEL_KIND_CIRCLE, "[!! Cîrcle !!]"),
937 (STATUS_PANEL_KIND_LINEAR, "[!! Lîneâr Dimênsion !!]"),
938 (STATUS_PANEL_KIND_ANGULAR, "[!! Ângulâr Dimênsion !!]"),
939 (STATUS_PANEL_KIND_RADIUS, "[!! Râdius Dimênsion !!]"),
940 (STATUS_PANEL_KIND_DIAMETER, "[!! Diâmeter Dimênsion !!]"),
941 (STATUS_PANEL_KIND_UNKNOWN, "[!! Ûnknôwn !!]"),
942 (STATUS_PANEL_MORE, "[!! + {n} môre !!]"),
943 (TOOLBAR_OVERFLOW, "[!! Môre tôols !!]"),
944 (MENU_BAR_LABEL, "[!! Mênu Bâr !!]"),
945 (MENU_FILE, "[!! Fîle !!]"),
946 (MENU_EDIT, "[!! Édit !!]"),
947 (MENU_VIEW, "[!! Vîew !!]"),
948 (MENU_INSERT, "[!! Insêrt !!]"),
949 (MENU_TOOLS, "[!! Tôols !!]"),
950 (MENU_SKETCH, "[!! Skêtch !!]"),
951 (MENU_SKETCH_EXIT, "[!! Êxit Skêtch !!]"),
952 (MENU_WINDOW, "[!! Wîndow !!]"),
953 (MENU_HELP, "[!! Hêlp !!]"),
954 (MENU_FILE_NEW, "[!! Néw !!]"),
955 (MENU_FILE_OPEN, "[!! Ôpen... !!]"),
956 (MENU_FILE_SAVE, "[!! Sâve !!]"),
957 (MENU_FILE_SAVE_AS, "[!! Sâve Âs... !!]"),
958 (MENU_FILE_QUIT, "[!! Quît !!]"),
959 (MENU_FILE_IMPORT, "[!! Impôrt... !!]"),
960 (MENU_FILE_EXPORT, "[!! Expôrt !!]"),
961 (MENU_FILE_EXPORT_STEP, "[!! STÊP (.step) !!]"),
962 (FILE_PICKER_TITLE_OPEN, "[!! Ôpen Dôcument !!]"),
963 (FILE_PICKER_TITLE_SAVE_AS, "[!! Sâve Dôcument Âs !!]"),
964 (FILE_PICKER_TITLE_IMPORT, "[!! Impôrt STÊP !!]"),
965 (FILE_PICKER_TITLE_EXPORT, "[!! Expôrt STÊP !!]"),
966 (FILE_PICKER_OPEN, "[!! Ôpen !!]"),
967 (FILE_PICKER_SAVE, "[!! Sâve !!]"),
968 (FILE_PICKER_IMPORT, "[!! Impôrt !!]"),
969 (FILE_PICKER_EXPORT, "[!! Expôrt !!]"),
970 (
971 FILE_PICKER_NO_STEP_FILES,
972 "[!! Nô STÊP fîles în thîs fôlder !!]",
973 ),
974 (FILE_PICKER_CANCEL, "[!! Cancêl !!]"),
975 (FILE_PICKER_LIST, "[!! Dôcument fôlders !!]"),
976 (FILE_PICKER_LIST_STEP, "[!! STÊP fîles !!]"),
977 (FILE_PICKER_FILENAME_PLACEHOLDER, "[!! Dôcument nâme !!]"),
978 (FILE_PICKER_FILENAME_PLACEHOLDER_STEP, "[!! Fîle nâme !!]"),
979 (FILE_PICKER_DIR_EMPTY, "[!! Nô dôcuments în thîs fôlder !!]"),
980 (FILE_OVERWRITE_TITLE, "[!! Replâce dôcument? !!]"),
981 (
982 FILE_OVERWRITE_MESSAGE,
983 "[!! Â dôcument alrêady êxists ât thîs locâtion. !!]",
984 ),
985 (FILE_OVERWRITE_TITLE_STEP, "[!! Replâce fîle? !!]"),
986 (
987 FILE_OVERWRITE_MESSAGE_STEP,
988 "[!! Â fîle alrêady êxists ât thîs locâtion. !!]",
989 ),
990 (FILE_OVERWRITE_REPLACE, "[!! Replâce !!]"),
991 (FILE_OVERWRITE_CANCEL, "[!! Cancêl !!]"),
992 (FILE_DISCARD_TITLE, "[!! Discârd unsâved chânges? !!]"),
993 (
994 FILE_DISCARD_MESSAGE,
995 "[!! Continûing will pêrmanently lôse yôur unsâved edîts. !!]",
996 ),
997 (FILE_DISCARD_CONFIRM, "[!! Discârd !!]"),
998 (FILE_DISCARD_CANCEL, "[!! Kêep edîting !!]"),
999 (
1000 FILE_IMPORT_REPLACE_TITLE,
1001 "[!! Replâce cûrrent dôcument? !!]",
1002 ),
1003 (
1004 FILE_IMPORT_REPLACE_MESSAGE,
1005 "[!! Thê dôcument chânged whîle thê impôrt wâs rûnning. Instâlling thê impôrt discârds thôse chânges. !!]",
1006 ),
1007 (FILE_IMPORT_REPLACE_CONFIRM, "[!! Instâll impôrt !!]"),
1008 (FILE_IMPORT_REPLACE_CANCEL, "[!! Kêep cûrrent !!]"),
1009 (DEFAULT_DOCUMENT_NAME, "[!! Untîtled !!]"),
1010 (NOTIFY_SAVE_FAILED, "[!! Sâve fâiled !!]"),
1011 (NOTIFY_LOAD_FAILED, "[!! Ôpen fâiled !!]"),
1012 (
1013 NOTIFY_SCAN_FAILED,
1014 "[!! Côuld not rêad dôcuments fôlder !!]",
1015 ),
1016 (NOTIFY_SAVED, "[!! Sâved !!]"),
1017 (NOTIFY_IMPORTED, "[!! Impôrted !!]"),
1018 (NOTIFY_IMPORT_FAILED, "[!! Impôrt fâiled !!]"),
1019 (NOTIFY_EXPORTED, "[!! Expôrted !!]"),
1020 (NOTIFY_EXPORT_FAILED, "[!! Expôrt fâiled !!]"),
1021 (STEP_PROGRESS_TITLE_IMPORT, "[!! Impôrting STÊP !!]"),
1022 (STEP_PROGRESS_TITLE_EXPORT, "[!! Expôrting STÊP !!]"),
1023 (STEP_PROGRESS_CANCEL, "[!! Cancêl !!]"),
1024 (NOTIFY_DISMISS, "[!! Dîsmiss !!]"),
1025 (MENU_EDIT_UNDO, "[!! Undô !!]"),
1026 (MENU_EDIT_REDO, "[!! Redô !!]"),
1027 (MENU_VIEW_ZOOM_FIT, "[!! Zôom to Fît !!]"),
1028 (MENU_PLACEHOLDER_COMING_SOON, "[!! Côming Sôon !!]"),
1029 (MENU_TOOLS_OPTIONS, "[!! Ôptions... !!]"),
1030 (MENU_TOOLS_KEYBOARD, "[!! Custômize Kêyboard... !!]"),
1031 (KEYBOARD_DIALOG_TITLE, "[!! Custômize Kêyboard !!]"),
1032 (SETTINGS_DIALOG_TITLE, "[!! Sêlection ôptions !!]"),
1033 (SETTINGS_PICK_APERTURE_LABEL, "[!! Pîck âperture !!]"),
1034 (
1035 SETTINGS_PICK_APERTURE_HINT,
1036 "[!! Hôw mâny pîxels ôf slâck thê pîcker âllows whên clîcking thîn lînes. !!]",
1037 ),
1038 (SETTINGS_REDUCE_MOTION_LABEL, "[!! Redûce môtion !!]"),
1039 (SETTINGS_RESET, "[!! Resêt !!]"),
1040 (SETTINGS_CLOSE, "[!! Clôse !!]"),
1041 (HOTKEY_SECTION_HEADING, "[!! Kêyboard shortcûts !!]"),
1042 (
1043 HOTKEY_RECORDING_HINT,
1044 "[!! Clîck to recôrd, Êsc to cancêl !!]",
1045 ),
1046 (HOTKEY_RECORDING_PROMPT, "[!! Prêss a kêy... !!]"),
1047 (HOTKEY_UNBOUND_LABEL, "[!! Unbôund !!]"),
1048 (HOTKEY_LABEL_SKETCH, "[!! Skêtch !!]"),
1049 (HOTKEY_LABEL_ESCAPE, "[!! Cancêl / Êxit Skêtch !!]"),
1050 (HOTKEY_LABEL_SMART_DIMENSION, "[!! Smârt Dîmension !!]"),
1051 (HOTKEY_LABEL_TRIM, "[!! Trîm Êntities !!]"),
1052 (HOTKEY_LABEL_EXTEND, "[!! Extênd Êntities !!]"),
1053 (HOTKEY_LABEL_MIRROR, "[!! Mîrror Êntities !!]"),
1054 (
1055 HOTKEY_LABEL_CONSTRUCTION_TOGGLE,
1056 "[!! Tôggle Constrûction !!]",
1057 ),
1058 (HOTKEY_LABEL_UNDO, "[!! Undô !!]"),
1059 (HOTKEY_LABEL_REDO, "[!! Redô !!]"),
1060 (HOTKEY_LABEL_NEW, "[!! Néw !!]"),
1061 (HOTKEY_LABEL_OPEN, "[!! Ôpen !!]"),
1062 (HOTKEY_LABEL_SAVE, "[!! Sâve !!]"),
1063 (HOTKEY_LABEL_IMPORT, "[!! Impôrt STÊP !!]"),
1064 (HOTKEY_LABEL_EXPORT, "[!! Expôrt STÊP !!]"),
1065 (HOTKEY_LABEL_SELECT_ALL, "[!! Sêlect Âll !!]"),
1066 (HOTKEY_LABEL_DELETE_SELECTION, "[!! Delête !!]"),
1067 (HOTKEY_LABEL_ZOOM_FIT, "[!! Zôom to Fît !!]"),
1068 (HOTKEY_LABEL_SHORTCUT_BAR, "[!! Shortcût Bâr !!]"),
1069 (HOTKEY_LABEL_QUIT, "[!! Quît !!]"),
1070 (HOTKEY_LABEL_REBUILD, "[!! Rebûild !!]"),
1071 (HOTKEY_LABEL_FORCE_REBUILD, "[!! Fôrce Rebûild !!]"),
1072 (NOTIFY_REATTACH_PICK, "[!! Pîck a fâce to reattâch !!]"),
1073 (NOTIFY_REATTACH_NON_PLANAR, "[!! Pîck a plânar fâce !!]"),
1074 (NOTIFY_COMING_SOON, "[!! Côming sôon !!]"),
1075 (
1076 NOTIFY_MIRROR_SELECTION_HINT,
1077 "[!! Sêlect entîties tô mîrror plûs ône âxis lîne. !!]",
1078 ),
1079 (
1080 NOTIFY_HOTKEY_CONFLICT,
1081 "[!! Shortcût alrêady ûsed by anôther commând. !!]",
1082 ),
1083 (SHORTCUT_BAR_TITLE, "[!! Shortcût Bâr !!]"),
1084 (PROPERTY_PANE_NO_SELECTION, "[!! Nôthing sêlected !!]"),
1085 (
1086 EXTRUDE_PROMPT_SELECT_SKETCH,
1087 "[!! Sêlect a skêtch to êxtrude !!]",
1088 ),
1089 (EXTRUDE_PROFILE_SELECTED, "[!! Skêtch sêlected !!]"),
1090 (
1091 FEATURE_HINT_EXIT_SKETCH,
1092 "[!! Êxit the skêtch to add a fêature !!]",
1093 ),
1094 (NOTIFY_EXTRUDE_NO_SKETCH, "[!! Crêate a skêtch fîrst !!]"),
1095 (NOTIFY_EXTRUDE_FAILED, "[!! Cân't prêview this êxtrude !!]"),
1096 (PROPERTY_ROW_EXTRUDE_END, "[!! Énd Condîtion !!]"),
1097 (PROPERTY_ROW_EXTRUDE_DEPTH, "[!! Dépth !!]"),
1098 (PROPERTY_ROW_EXTRUDE_DRAFT, "[!! Drâft !!]"),
1099 (PROPERTY_ROW_EXTRUDE_DRAFT_ANGLE, "[!! Drâft Ângle !!]"),
1100 (PROPERTY_ROW_EXTRUDE_DIRECTION_TWO, "[!! Dîrection 2 !!]"),
1101 (PROPERTY_ROW_EXTRUDE_THIN, "[!! Thîn Fêature !!]"),
1102 (PROPERTY_ROW_EXTRUDE_MERGE, "[!! Mêrge Rêsult !!]"),
1103 (PROPERTY_PANE_EXTRUDE_TITLE, "[!! Éxtrude !!]"),
1104 (PROPERTY_GROUP_DIRECTION_1, "[!! Dîrection 1 !!]"),
1105 (PROPERTY_GROUP_FEATURE_SCOPE, "[!! Fêature Scôpe !!]"),
1106 (EXTRUDE_END_BLIND, "[!! Blînd !!]"),
1107 (EXTRUDE_END_MIDPLANE, "[!! Mîd Plâne !!]"),
1108 (STATUS_EXTRUDE_VALID, "[!! Vâlid Sôlid !!]"),
1109 (STATUS_EXTRUDE_INVALID, "[!! Invâlid Sôlid !!]"),
1110 (STATUS_EXTRUDE_DANGLING, "[!! Dângling !!]"),
1111 (EXTRUDE_PANEL_TITLE, "[!! Êxtrude Diagnôstics !!]"),
1112 (
1113 EXTRUDE_PANEL_UNSOLVED_SKETCH,
1114 "[!! Skêtch dôes nôt sôlve !!]",
1115 ),
1116 (
1117 EXTRUDE_PANEL_PROFILE_OPEN_LOOP,
1118 "[!! Prôfile hâs an ôpen lôop !!]",
1119 ),
1120 (
1121 EXTRUDE_PANEL_PROFILE_BRANCHING,
1122 "[!! Prôfile hâs a brânching vêrtex !!]",
1123 ),
1124 (
1125 EXTRUDE_PANEL_PROFILE_SELF_INTERSECTING,
1126 "[!! Prôfile lôop sêlf-intersêcts !!]",
1127 ),
1128 (
1129 EXTRUDE_PANEL_PROFILE_ZERO_AREA,
1130 "[!! Prôfile hâs zêro ârea !!]",
1131 ),
1132 (
1133 EXTRUDE_PANEL_PROFILE_UNCONTAINED,
1134 "[!! Prôfile lôop lîes outsîde the ôuter bôundary !!]",
1135 ),
1136 (
1137 EXTRUDE_PANEL_PROFILE_OVERLAPPING,
1138 "[!! Prôfile înner lôops overlâp !!]",
1139 ),
1140 (EXTRUDE_PANEL_EMPTY_DEPTH, "[!! Êxtrude dêpth is zêro !!]"),
1141 (
1142 EXTRUDE_PANEL_SHELL_OPEN,
1143 "[!! Sôlid shêll is nôt clôsed !!]",
1144 ),
1145 (
1146 EXTRUDE_PANEL_DEGENERATE_EDGE,
1147 "[!! Êdge {n} collâpses belôw tolerânce !!]",
1148 ),
1149 (
1150 EXTRUDE_PANEL_DANGLING_EDGE,
1151 "[!! Êdge {n} belôngs to nô lôop !!]",
1152 ),
1153 (
1154 EXTRUDE_PANEL_DANGLING_VERTEX,
1155 "[!! Vêrtex {n} belôngs to nô lôop !!]",
1156 ),
1157 (
1158 EXTRUDE_PANEL_UNSUPPORTED_DIRECTION,
1159 "[!! Êxtrude dirêction is nôt suppôrted yêt !!]",
1160 ),
1161 (
1162 EXTRUDE_PANEL_UNSUPPORTED_END,
1163 "[!! Énd condîtion is nôt suppôrted yêt !!]",
1164 ),
1165 (
1166 EXTRUDE_PANEL_UNSUPPORTED_DRAFT,
1167 "[!! Drâft is nôt suppôrted yêt !!]",
1168 ),
1169 (
1170 EXTRUDE_PANEL_UNSUPPORTED_THIN,
1171 "[!! Thîn fêature is nôt suppôrted yêt !!]",
1172 ),
1173 (EXTRUDE_PANEL_INTERNAL, "[!! Intêrnal kêrnel êrror !!]"),
1174 (
1175 EXTRUDE_PANEL_DANGLING_REFERENCE,
1176 "[!! Skêtch plâne refêrences a fâce that nô longer exîsts !!]",
1177 ),
1178 (
1179 EXTRUDE_PANEL_NON_PLANAR_TARGET,
1180 "[!! Skêtch plâne târget fâce is nôt planâr !!]",
1181 ),
1182 (
1183 EXTRUDE_PANEL_UPSTREAM_UNRESOLVED,
1184 "[!! Dêpends ôn a fâiled featûre !!]",
1185 ),
1186 (PROPERTY_ROW_KIND, "[!! Týpe !!]"),
1187 (PROPERTY_ROW_X, "X"),
1188 (PROPERTY_ROW_Y, "Y"),
1189 (PROPERTY_ROW_FROM, "[!! Frôm !!]"),
1190 (PROPERTY_ROW_TO, "[!! Tô !!]"),
1191 (PROPERTY_ROW_CENTER, "[!! Cênter !!]"),
1192 (PROPERTY_ROW_START, "[!! Stârt !!]"),
1193 (PROPERTY_ROW_END, "[!! Énd !!]"),
1194 (PROPERTY_ROW_RADIUS, "[!! Râdius !!]"),
1195 (PROPERTY_ROW_CONSTRUCTION, "[!! Constrûction !!]"),
1196 (PROPERTY_KIND_POINT, "[!! Pôint !!]"),
1197 (PROPERTY_KIND_LINE, "[!! Lîne !!]"),
1198 (PROPERTY_KIND_ARC, "[!! Ârc !!]"),
1199 (PROPERTY_KIND_CIRCLE, "[!! Cîrcle !!]"),
1200 (PROPERTY_VALUE_YES, "[!! Yés !!]"),
1201 (PROPERTY_VALUE_NO, "[!! Nô !!]"),
1202 (PROPERTY_ROW_FIRST, "[!! Fîrst !!]"),
1203 (PROPERTY_ROW_SECOND, "[!! Sêcond !!]"),
1204 (PROPERTY_ROW_TARGET, "[!! Târget !!]"),
1205 (PROPERTY_ROW_POINT, "[!! Pôint !!]"),
1206 (PROPERTY_ROW_LINE, "[!! Lîne !!]"),
1207 (PROPERTY_ROW_DIM_KIND, "[!! Týpe !!]"),
1208 (PROPERTY_ROW_DIM_DRIVES, "[!! Drîves !!]"),
1209 (PROPERTY_ROW_DIM_LENGTH, "[!! Léngth !!]"),
1210 (PROPERTY_ROW_DIM_DIAMETER, "[!! Dîameter !!]"),
1211 (PROPERTY_ROW_DIM_ANGLE, "[!! Ângle !!]"),
1212 (PROPERTY_KIND_DIM_LINEAR, "[!! Lînear !!]"),
1213 (PROPERTY_KIND_DIM_RADIUS, "[!! Râdius !!]"),
1214 (PROPERTY_KIND_DIM_DIAMETER, "[!! Dîameter !!]"),
1215 (PROPERTY_KIND_DIM_ANGULAR, "[!! Ângûlar !!]"),
1216 (PROPERTY_VALUE_DRIVING, "[!! Drîving !!]"),
1217 (PROPERTY_VALUE_DRIVEN, "[!! Drîven !!]"),
1218];
1219
1220#[cfg(test)]
1221mod tests {
1222 use super::{AR_XB, EN_US, make_strings};
1223 use bone_ui::layout::LayoutDirection;
1224 use bone_ui::strings::{Locale, StringKey};
1225 use std::collections::BTreeSet;
1226
1227 fn keys(entries: &[(StringKey, &str)]) -> BTreeSet<StringKey> {
1228 entries.iter().map(|(k, _)| *k).collect()
1229 }
1230
1231 #[test]
1232 fn ar_xb_bundle_covers_every_en_us_key() {
1233 let en: BTreeSet<StringKey> = keys(EN_US);
1234 let ar: BTreeSet<StringKey> = keys(AR_XB);
1235 let missing: Vec<StringKey> = en.difference(&ar).copied().collect();
1236 assert!(
1237 missing.is_empty(),
1238 "ar-XB missing translations for: {missing:?}",
1239 );
1240 }
1241
1242 #[test]
1243 fn ar_xb_does_not_invent_unknown_keys() {
1244 let en: BTreeSet<StringKey> = keys(EN_US);
1245 let ar: BTreeSet<StringKey> = keys(AR_XB);
1246 let stray: Vec<StringKey> = ar.difference(&en).copied().collect();
1247 assert!(
1248 stray.is_empty(),
1249 "ar-XB defines keys not declared in en-US: {stray:?}",
1250 );
1251 }
1252
1253 #[test]
1254 fn loading_ar_xb_yields_rtl_table_with_non_empty_entries() {
1255 let table = make_strings(Locale::ArXb);
1256 assert_eq!(table.direction(), LayoutDirection::Rtl);
1257 AR_XB.iter().for_each(|(key, _)| {
1258 assert!(
1259 !table.resolve(*key).is_empty(),
1260 "ar-XB entry for {key} resolved to empty string",
1261 );
1262 });
1263 }
1264
1265 #[test]
1266 fn loading_en_us_yields_ltr_table_with_non_empty_entries() {
1267 let table = make_strings(Locale::EnUs);
1268 assert_eq!(table.direction(), LayoutDirection::Ltr);
1269 EN_US.iter().for_each(|(key, _)| {
1270 assert!(
1271 !table.resolve(*key).is_empty(),
1272 "en-US entry for {key} resolved to empty string",
1273 );
1274 });
1275 }
1276}