Another project
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 63 kB View raw
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}