diff --git a/.gitignore b/.gitignore index 399b3aed0..be82bc7d5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.bin *.blif *.log +*.mo .tmp dist @@ -16,3 +17,4 @@ bower_components app/profile.json app/_cache app/_build +app/resources/locale/**/*.json diff --git a/README.md b/README.md index 52f2df594..b177b6dc2 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,18 @@ npm run dist NOTE: in Mac OS X this commmand generates also a **dmg** package. +## Languages + +| Language | Translated strings | +|:----------:|:------------------------------------------:| +| English | ![Progress](http://progressed.io/bar/100) | +| Spanish | ![Progress](http://progressed.io/bar/100) | +| French | ![Progress](http://progressed.io/bar/87) | +| Basque | ![Progress](http://progressed.io/bar/80) | +| Galician | ![Progress](http://progressed.io/bar/78) | + +**Contribute**: add or update the [translations](https://github.com/FPGAwars/icestudio/tree/develop/app/resources/locale) by following the [next instructions](https://angular-gettext.rocketeer.be/dev-guide/translate/#poedit). + ## Version 0.1 ![][icestudio-0.1-demo] @@ -114,6 +126,7 @@ NOTE: in Mac OS X this commmand generates also a **dmg** package. * [Xoan Sampaiño](https://github.com/xoan) * [Salvador E. Tropea](https://github.com/set-soft) * [Democrito](https://github.com/Democrito) + * [Martoni](https://github.com/Martoni) * v0.1 * [Miguel Sánchez de León Peque](https://github.com/Peque) diff --git a/app/bower.json b/app/bower.json index c352491e9..bdc87e504 100644 --- a/app/bower.json +++ b/app/bower.json @@ -36,6 +36,7 @@ "async": "^1.5.2", "svg-pan-zoom": "^3.2.9", "alertify-js": "^1.8.0", - "jquery-resize": "*" + "jquery-resize": "*", + "angular-gettext": "^2.3.8" } } diff --git a/app/index.html b/app/index.html index eaa2b6368..a7e5f817b 100644 --- a/app/index.html +++ b/app/index.html @@ -46,6 +46,7 @@ + diff --git a/app/resources/blocks/labels.js b/app/resources/blocks/labels.js new file mode 100644 index 000000000..92297d24b --- /dev/null +++ b/app/resources/blocks/labels.js @@ -0,0 +1,56 @@ +// In this file the blocks labels are annotated for translation + +/// Bit +gettext('bit') +/// Config +gettext('config') +/// Pull up +gettext('pull_up') +/// Pull up inv +gettext('pull_up_inv') +/// Tri-state +gettext('tri_state') +/// Logic +gettext('logic') +/// Comb +gettext('comb') +/// Demux 1:2 +gettext('demux_1_2') +/// Demux 1:4 +gettext('demux_1_4') +/// Demux 1:8 +gettext('demux_1_8') +/// Hex 7 Segment CC +gettext('hex_7seg_cc') +/// Hex 7 Segment CA +gettext('hex_7seg_ca') +/// Mux 2:1 +gettext('mux_2_1') +/// Mux 4:1 +gettext('mux_4_1') +/// Gate +gettext('gate') +/// And +gettext('and') +/// Nand +gettext('nand') +/// Nor +gettext('nor') +/// Not +gettext('not') +/// Or +gettext('or') +/// Xnor +gettext('xnor') +/// Xor +gettext('xor') +/// Sec +gettext('sec') +/// D flip-flop async +gettext('dff_ar') +/// D flip-flop async +gettext('dff_sr') +/// T flip-flop async +gettext('tff_ar') +/// T flip-flop +gettext('tff_sr') diff --git a/app/resources/examples/labels.js b/app/resources/examples/labels.js new file mode 100644 index 000000000..73c95cac6 --- /dev/null +++ b/app/resources/examples/labels.js @@ -0,0 +1,10 @@ +// In this file the examples labels are annotated for translation + +/// 1. Basic +gettext('1_basic') +/// 1. Led on +gettext('1_led_on') +/// 2. Switch led +gettext('2_switch_led') +/// 3. Switch and gate +gettext('3_switch_and_gate') diff --git a/app/resources/locale/en.json b/app/resources/locale/en.json deleted file mode 100644 index cb6512fce..000000000 --- a/app/resources/locale/en.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "file": "File", - "edit": "Edit", - "view": "View", - "boards": "Boards", - "tools": "Tools", - "help": "Help", - "new_project": "New project", - "open_project": "Open project", - "examples": "Examples", - "templates": "Templates", - "save": "Save", - "save_as": "Save as", - "import_block": "Import block", - "export_as_block": "Export as block", - "export": "Export", - "verilog": "Verilog", - "preferences": "Preferences", - "pcf": "PCF", - "datasheet_not_defined": "Datasheet not defined", - "testbench": "Testbench", - "gtkwave": "GTKWave", - "datasheet": "Datasheet", - "clone_selected": "Clone selected", - "remove_selected": "Remove selected", - "clear_all": "Clear all", - "image_path": "Image path", - "remote_hostname": "Remote hostname", - "language": "Language", - "english": "English", - "spanish": "Spanish", - "galician": "Galician", - "french": "French", - "basque": "Basque", - "reset_view": "Reset view", - "verify": "Verify", - "build": "Build", - "upload": "Upload", - "sync_remote_files": "Synchronize remote files ...", - "execute_remote": "Execute remote {{label}} ...", - "toolchain": "Toolchain", - "install": "Install", - "update": "Update", - "remove": "Remove", - "reset_default": "Reset default", - "toolchain_not_installed": "Toolchain not installed. Please, install the toolchain", - "drivers": "Drivers", - "enable": "Enable", - "drivers_enabled": "Drivers enabled", - "disable": "Disable", - "drivers_disabled": "Drivers disabled", - "homebrew_required": "Homebrew is required", - "unplug_and_reconnect": "Unplug and reconnect the board", - "install_drivers_windows": "

FTDI driver installation instructions

  1. Connect the FPGA board
  2. Replace the (Interface 0) driver of the board by libusbK
  3. Unplug and reconnect the board

Note: not fully working with Windows 10 + USB 3.0

", - "uninstall_drivers_windows": "

FTDI driver uninstallation instructions

  1. Find the FPGA USB Device
  2. Select the board interface and uninstall the driver
", - "view_license": "View license", - "version": "Version", - "documentation": "Documentation", - "source_code": "Source code", - "community_forum": "Community forum", - "about_icestudio": "About Icestudio", - "basic": "Basic", - "code": "Code", - "info": "Info", - "input": "Input", - "output": "Output", - "bit": "Bit", - "config": "Config", - "pull_up": "Pull up", - "pull_up_inv": "Pull up inv", - "tri_state": "Tri-state", - "logic": "Logic", - "comb": "Comb", - "demux_1_2": "Demux 1:2", - "demux_1_4": "Demux 1:4", - "demux_1_8": "Demux 1:8", - "hex_7seg_cc": "Hex 7 Segment CC", - "hex_7seg_ca": "Hex 7 Segment CA", - "mux_2_1": "Mux 2:1", - "mux_4_1": "Mux 4:1", - "gate": "Gate", - "and": "And", - "nand": "Nand", - "nor": "Nor", - "not": "Not", - "or": "Or", - "xnor": "Xnor", - "xor": "Xor", - "sec": "Sec", - "dff_ar": "D flip-flop async", - "dff_sr": "D flip-flop", - "tff_ar": "T flip-flop async", - "tff_sr": "T flip-flop", - "1_basic": "1. Basic", - "1_led_on": "1. Led on", - "2_switch_led": "2. Switch led", - "3_switch_and_gate": "3. Switch and gate", - "read_only": "Read only", - "untitled": "untitled", - "enter_project_title": "Enter the project's title", - "load_project_confirmation": "The current project will be removed. Do you want to continue loading the project?", - "enter_project_image_path": "Enter the project's image path", - "enter_remote_hostname": "Enter the remote hostname user@host (experimental)", - "wrong_remote_hostname": "Wrong remote hostname {{name}}", - "remote_host_not_connected": "Remote host {{name}} not connected", - "clear_all_confirmation": "Do you want to clear all?", - "remove_block_confirmation": "Do you want to remove the selected block?", - "change_board_confirmation": "The current FPGA I/O configuration will be lost. Do you want to change to {{name}} board?", - "board_selected": "Board {{name}} selected", - "remove_toolchain_confirmation": "The toolchain will be removed. Do you want to continue?", - "toolchain_removed": "Toolchain removed", - "project_created": "New project {{name}} created", - "project_loaded": "Project {{name}} loaded", - "wrong_project_format": "Wrong project format: {{name}}", - "project_saved": "Project {{name}} saved", - "block_imported": "Block {{name}} imported", - "block_exported_as": "Block exported as {{name}}", - "verilog_exported": "Verilog code exported", - "pcf_exported": "PCF file exported", - "testbench_exported": "Testbench exported", - "gtkwave_exported": "GTKWave exported", - "enter_block_label": "Enter the block's label", - "label_updated": "Label updated", - "enter_block_ports": "Enter the block's ports", - "wrong_block_format": "Wrong block format: {{type}}", - "start_verify": "Start verification ...", - "start_build": "Start building ...", - "start_upload": "Start uploading ...", - "done_verify": "Verification done", - "done_build": "Build done", - "done_upload": "Upload done", - "generic_error": "Error: {{error}}", - "file_does_not_exist": "File {{file}} does not exist", - "board_not_detected": "Board {{name}} not detected", - "unknown_board": "Unknown board", - "fpga_io_not_defined": "FPGA I/O ports not defined", - "duplicated_fpga_io": "Duplicated FPGA I/O ports", - "installing_toolchain": "Installing toolchain", - "internet_connection_required": "Internet connection required", - "installation_completed": "Installation completed", - "toolchain_installed": "Toolchain installed" -} diff --git a/app/resources/locale/en/en.po b/app/resources/locale/en/en.po new file mode 100644 index 000000000..18a1f7dd5 --- /dev/null +++ b/app/resources/locale/en/en.po @@ -0,0 +1,678 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "1. Basic" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "1. Led on" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "2. Switch led" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "3. Switch and gate" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "Unplug and reconnect the board" + +#: app/scripts/services/utils.service.js:480 +msgid "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" +msgstr "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" + +#: app/scripts/services/utils.service.js:496 +msgid "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" +msgstr "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "About Icestudio" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "Basic" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "Basque" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "Block exported as {{name}}" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "Block {{name}} imported" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "Board {{name}} not detected" + +#: app/scripts/controllers/menu.js:407 app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "Board {{name}} selected" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "Boards" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "Build" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "Check Internet connection..." + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "Check Python..." + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "Clear all" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "Clone selected" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "Code" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "Community forum" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "Datasheet" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "Datasheet not defined" + +#: app/scripts/services/tools.service.js:283 +msgid "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" +msgstr "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "Disable" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "Do you want to clear all?" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "Do you want to remove the selected block?" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "Documentation" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "Drivers" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "Drivers disabled" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "Drivers enabled" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "Duplicated FPGA I/O ports" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "Edit" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "Enable" + +#: app/views/menu.html:134 +msgid "English" +msgstr "English" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "Enter the block's label" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "Enter the block's ports" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "Enter the project's image path" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "Enter the project's title" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "Enter the remote hostname user@host (experimental)" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "Error: default toolchain not found in '{{dir}}'" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "Error: {{error}}" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "Examples" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "Execute remote {{label}} ..." + +#: app/views/menu.html:79 +msgid "Export" +msgstr "Export" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "Export as block" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "Extract default apio files..." + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "Extract default apio packages..." + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "Extract virtual env files..." + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "FPGA I/O ports not defined" + +#: app/views/menu.html:23 +msgid "File" +msgstr "File" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "File {{file}} does not exist" + +#: app/views/menu.html:158 +msgid "French" +msgstr "French" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "GTKWave exported" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "Galician" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "Help" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "Homebrew is required" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "Image path" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "Import block" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "Info" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "Input" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "Install default apio..." + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "Installation completed" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "Installing toolchain" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "Internet connection required" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "Label updated" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "Language" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "Make virtual env..." + +#: app/views/menu.html:26 +msgid "New project" +msgstr "New project" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "New project {{name}} created" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "Open project" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "Output" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "PCF file exported" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "Preferences" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "Project {{name}} loaded" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "Project {{name}} saved" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "Python 2.7 is required" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "Read only" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "Remote host {{name}} not connected" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "Remote hostname" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "Remove" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "Remove selected" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "Reset default" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "Reset view" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "Save" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "Save as" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "Source code" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "Spanish" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "Synchronize remote files ..." + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "Templates" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "Testbench" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "Testbench exported" + +#: app/scripts/controllers/menu.js:403 +msgid "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" +msgstr "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" + +#: app/scripts/controllers/menu.js:117 app/scripts/controllers/menu.js:94 +msgid "" +"The current project will be removed. Do you want to continue loading the " +"project?" +msgstr "" +"The current project will be removed. Do you want to continue loading the " +"project?" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "The toolchain will be removed. Do you want to continue?" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "The toolchain will be restored to default. Do you want to continue?" + +#: app/scripts/services/tools.service.js:291 +msgid "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" +msgstr "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "Toolchain" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "Toolchain installed" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "Toolchain not installed" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "Toolchain not installed. Please, install the toolchain" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "Toolchain removed" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "Tools" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "Unknown board" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "Upload" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "Verify" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "Verilog code exported" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "Version" + +#: app/views/menu.html:170 +msgid "View" +msgstr "View" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "View license" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "Wrong block format: {{type}}" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "Wrong project format: {{name}}" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "Wrong remote hostname {{name}}" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "And" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "Bit" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "Comb" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "Config" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "Demux 1:2" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "Demux 1:4" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "Demux 1:8" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "D flip-flop async" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "D flip-flop" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "Build done" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "Upload done" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "Verification done" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "Gate" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "Hex 7 Segment CA" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "Hex 7 Segment CC" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "Logic" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "Mux 2:1" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "Mux 4:1" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "Nand" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "Nor" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "Not" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "Or" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "Pull up" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "Pull up inv" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "Sec" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "Start building ..." + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "Start uploading ..." + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "start_verify" + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "T flip-flop async" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "T flip-flop" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "Tri-state" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "untitled" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "Xnor" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "Xor" diff --git a/app/resources/locale/es-ES.json b/app/resources/locale/es-ES.json deleted file mode 100644 index fc9b890c9..000000000 --- a/app/resources/locale/es-ES.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "file": "Archivo", - "edit": "Editar", - "view": "Ver", - "boards": "Placas", - "tools": "Herramientas", - "help": "Ayuda", - "new_project": "Nuevo projecto", - "open_project": "Abrir proyecto", - "examples": "Ejemplos", - "templates": "Plantillas", - "save": "Guardar", - "save_as": "Guardar como", - "import_block": "Importar bloque", - "export_as_block": "Exportar como bloque", - "export": "Exportar", - "verilog": "Verilog", - "pcf": "PCF", - "testbench": "Testbench", - "gtkwave": "GTKWave", - "clone_selected": "Clonar seleccionado", - "remove_selected": "Eliminar seleccionado", - "clear_all": "Borrar todo", - "image_path": "Ruta de la imagen", - "remote_hostname": "Nombre del host remoto", - "language": "Idioma", - "english": "Inglés", - "spanish": "Español", - "galician": "Gallego", - "basque": "Euskera", - "reset_view": "Resetear vista", - "verify": "Verificar", - "build": "Sintetizar", - "upload": "Cargar", - "sync_remote_files": "Sincronizando ficheros remotos ...", - "execute_remote": "Ejecutar {{label}} remoto ...", - "toolchain": "Toolchain", - "install": "Instalar", - "update": "Actualizar", - "remove": "Eliminar", - "toolchain_not_installed": "La toolchain no está instalada. Por favor, instala la toolchain", - "drivers": "Drivers", - "enable": "Habilitar", - "drivers_enabled": "Drivers habilitados", - "disable": "Deshabilitar", - "drivers_disabled": "Drivers deshabilitados", - "homebrew_required": "Homebrew es necesario", - "unplug_and_reconnect": "Desconecta y conecta la placa", - "install_drivers_windows": "

Instrucciones de instalación del driver FTDI

  1. Conecta la placa FPGA
  2. Reemplaza el driver de la (Interface 0) de la placa por libusbK
  3. Desconecta y conecta la placa

Aviso: no funciona con Windows 10 + USB 3.0

", - "uninstall_drivers_windows": "

Instrucciones de desinstalación del driver FTDI

  1. Encuentra el dispositivo USB FPGA
  2. Selecciona la interfaz de la placa y desinstala el driver
", - "view_license": "Ver licencia", - "version": "Versión", - "documentation": "Documentación", - "source_code": "Código fuente", - "community_forum": "Foro de la comunidad", - "about_icestudio": "Sobre Icestudio", - "basic": "Básico", - "code": "Código", - "info": "Info", - "input": "Entrada", - "output": "Salida", - "bit": "Bit", - "config": "Config", - "pull_up": "Pull up", - "pull_up_inv": "Pull up inv", - "tri_state": "Tri-state", - "logic": "Lógica", - "comb": "Comb", - "demux_1_2": "Demux 1:2", - "demux_1_4": "Demux 1:4", - "demux_1_8": "Demux 1:8", - "hex_7seg_cc": "Hex 7 Segment CC", - "hex_7seg_ca": "Hex 7 Segment AC", - "mux_2_1": "Mux 2:1", - "mux_4_1": "Mux 4:1", - "gate": "Puerta", - "and": "And", - "nand": "Nand", - "nor": "Nor", - "not": "Not", - "or": "Or", - "xnor": "Xnor", - "xor": "Xor", - "sec": "Sec", - "dff_ar": "Biestable D asinc", - "dff_sr": "Biestable D", - "tff_ar": "Biestable T asinc", - "tff_sr": "Biestable T", - "1_basic": "1. Básico", - "1_led_on": "1. Encender led", - "2_switch_led": "2. Interruptor con led", - "3_switch_and_gate": "3. Interruptor con puerta and", - "read_only": "Solo lectura", - "untitled": "Sin título", - "enter_project_title": "Introduce el título del proyecto", - "load_project_confirmation": "El actual projecto se borrará. ¿Deseas continuar abriendo el proyecto?", - "enter_project_image_path": "Introduce la ruta de la imagen del proyecto", - "enter_remote_hostname": "Introduce el nombre del host remoto usuario@host (experimental)", - "wrong_remote_hostname": "Nombre del host remoto incorrecto {{name}}", - "remote_host_not_connected": "Host remoto {{name}} no conectado", - "clear_all_confirmation": "¿Deseas borrar todo?", - "remove_block_confirmation": "¿Deseas eliminar el bloque seleccionado?", - "change_board_confirmation": "La configuración actual de E/S de la FPGA se perderá. ¿Deseas cambiar a la placa {{name}}?", - "board_selected": "Placa {{name}} seleccionada", - "remove_toolchain_confirmation": "La toolchain será eliminada. ¿Deseas continuar?", - "toolchain_removed": "Toolchain eliminada", - "project_created": "Nuevo proyecto {{name}} creado", - "project_loaded": "Proyecto {{name}} cargado", - "wrong_project_format": "Formato de proyecto incorrecto: {{name}}", - "project_saved": "Proyecto {{name}} guardado", - "block_imported": "Bloque {{name}} importado", - "block_exported_as": "Bloque exportado como {{name}}", - "verilog_exported": "Código Verilog exportado", - "pcf_exported": "Fichero PCF exportado", - "testbench_exported": "Testbench exportado", - "gtkwave_exported": "GTKWave exportado", - "enter_block_label": "Introduce la etiqueta del bloque", - "label_updated": "Etiqueta actualizada", - "enter_block_ports": "Introduce los puertos del bloque", - "wrong_block_format": "Formato de bloque incorrecto: {{type}}", - "start_verify": "Comenzar verificación ...", - "start_build": "Comenzar sintetizado ...", - "start_upload": "Comenzar carga ...", - "done_verify": "Verificación realizada", - "done_build": "Sintetizado realizado", - "done_upload": "Carga realizada", - "generic_error": "Error: {{error}}", - "file_does_not_exist": "El fichero {{file}} no existe", - "board_not_detected": "Placa no detectada", - "unknown_board": "Placa desconocida", - "fpga_io_not_defined": "Puertos E/S de la FPGA no definidos", - "duplicated_fpga_io": "Puertos E/S de la FPGA duplicados", - "installing_toolchain": "Instalando la toolchain", - "internet_connection_required": "Se requiere conexión a Internet", - "installation_completed": "Instalación completada", - "toolchain_installed": "Toolchain instalada" -} diff --git a/app/resources/locale/es_ES/es_ES.po b/app/resources/locale/es_ES/es_ES.po new file mode 100644 index 000000000..fc038e29b --- /dev/null +++ b/app/resources/locale/es_ES/es_ES.po @@ -0,0 +1,678 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "1. Básico" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "1. Encender led" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "2. Interruptor con led" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "3. Interruptor con puerta and" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "Desconecta y conecta la placa" + +#: app/scripts/services/utils.service.js:480 +msgid "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" +msgstr "" +"

Instrucciones de instalación del driver FTDI

  1. Conecta la " +"placa FPGA
  2. Reemplaza el driver de la (Interface 0) de la " +"placa por libusbK
  3. Desconecta y conecta la placa
" + +#: app/scripts/services/utils.service.js:496 +msgid "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" +msgstr "" +"

Instrucciones de desinstalación del driver FTDI

  1. Encuentra el " +"dispositivo USB FPGA
  2. Selecciona la interfaz de la placa y desinstala " +"el driver
" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "Sobre Icestudio" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "Básico" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "Euskera" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "Bloque exportado como {{name}}" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "Bloque {{name}} importado" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "Placa {{name}} no detectada" + +#: app/scripts/controllers/menu.js:407 app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "Placa {{name}} seleccionada" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "Placas" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "Sintetizar" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "Comprobando conexión a Internet..." + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "Comprobando Python..." + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "Borrar todo" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "Clonar seleccionado" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "Código" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "Foro de la comunidad" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "Datasheet" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "Datasheet no definido" + +#: app/scripts/services/tools.service.js:283 +msgid "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" +msgstr "" +"No se encuentra la toolchain por defecto, por lo que será descargada. Esta " +"operación requiere conexión a Internet. ¿Deseas continuar?" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "Deshabilitar" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "¿Deseas borrar todo?" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "¿Deseas eliminar el bloque seleccionado?" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "Documentación" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "Drivers" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "Drivers deshabilitados" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "Drivers habilitados" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "Puertos E/S de la FPGA duplicados" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "Editar" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "Habilitar" + +#: app/views/menu.html:134 +msgid "English" +msgstr "Inglés" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "Introduce la etiqueta del bloque" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "Introduce los puertos del bloque" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "Introduce la ruta de la imagen del proyecto" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "Introduce el título del proyecto" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "Introduce el nombre del host remoto usuario@host (experimental)" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "Error: toolchain por defecto no encontrada en '{{dir}}'" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "Error: {{error}}" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "Ejemplos" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "Ejecutar {{label}} remoto ..." + +#: app/views/menu.html:79 +msgid "Export" +msgstr "Exportar" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "Exportar como bloque" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "Extraer ficheros de apio..." + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "Extraer paquetes de apio..." + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "Extraer ficheros del virtual env" + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "Puertos E/S de la FPGA no definidos" + +#: app/views/menu.html:23 +msgid "File" +msgstr "Archivo" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "El fichero {{file}} no existe" + +#: app/views/menu.html:158 +msgid "French" +msgstr "Francés" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "GTKWave exportado" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "Gallego" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "Ayuda" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "Homebrew es necesario" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "Ruta de la imagen" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "Importar bloque" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "Info" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "Entrada" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "Instalar apio..." + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "Instalación completada" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "Instalando la toolchain" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "Se requiere conexión a Internet" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "Etiqueta actualizada" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "Idioma" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "Crear virtual env..." + +#: app/views/menu.html:26 +msgid "New project" +msgstr "Nuevo projecto" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "Nuevo proyecto {{name}} creado" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "Abrir proyecto" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "Salida" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "Fichero PCF exportado" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "Preferencias" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "Proyecto {{name}} cargado" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "Proyecto {{name}} guardado" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "Se requiere Python 2.7" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "Solo lectura" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "Host remoto {{name}} no conectado" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "Nombre del host remoto" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "Eliminar" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "Eliminar seleccionado" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "Reset default" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "Resetear vista" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "Guardar" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "Guardar como" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "Código fuente" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "Español" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "Sincronizando ficheros remotos ..." + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "Plantillas" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "Testbench" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "Testbench exportado" + +#: app/scripts/controllers/menu.js:403 +msgid "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" +msgstr "" +"La configuración actual de E/S de la FPGA se perderá. ¿Deseas cambiar a la " +"placa {{name}}?" + +#: app/scripts/controllers/menu.js:117 app/scripts/controllers/menu.js:94 +msgid "" +"The current project will be removed. Do you want to continue loading the " +"project?" +msgstr "El actual projecto se borrará. ¿Deseas continuar abriendo el proyecto?" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "La toolchain será eliminada. ¿Deseas continuar?" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "" +"La toolchain será restaurada a los valores por defecto: ¿Deseas continuar?" + +#: app/scripts/services/tools.service.js:291 +msgid "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" +msgstr "" +"La toolchain será actualizada. Esta operación requiere conexión a Internet. " +"¿Deseas continuar?" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "Toolchain" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "Toolchain instalada" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "La toolchain no está instalada" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "La toolchain no está instalada. Por favor, instala la toolchain" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "Toolchain eliminada" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "Herramientas" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "Placa desconocida" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "Cargar" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "Verificar" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "Código Verilog exportado" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "Versión" + +#: app/views/menu.html:170 +msgid "View" +msgstr "Ver" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "Ver licencia" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "Formato de bloque incorrecto: {{type}}" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "Formato de proyecto incorrecto: {{name}}" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "Nombre del host remoto incorrecto {{name}}" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "And" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "Bit" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "Comb" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "Config" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "Demux 1:2" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "Demux 1:4" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "Demux 1:8" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "Biestable D asinc" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "Biestable D" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "Sintetizado realizado" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "Carga realizada" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "Verificación realizada" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "Puerta" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "Hex 7 Segment AC" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "Hex 7 Segment CC" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "Lógica" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "Mux 2:1" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "Mux 4:1" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "Nand" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "Nor" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "Not" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "Or" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "Pull up" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "Pull up inv" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "Sec" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "Comenzar sintetizado ..." + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "Comenzar carga ..." + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "Comenzar verificación ..." + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "Biestable T asinc" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "Biestable T" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "Tri-estado" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "Sin título" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "Xnor" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "Xor" diff --git a/app/resources/locale/eu.json b/app/resources/locale/eu.json deleted file mode 100644 index 781e0309c..000000000 --- a/app/resources/locale/eu.json +++ /dev/null @@ -1,137 +0,0 @@ -{ -"file": "Fitxategia", -"edit": "Editatu", -"view": "Ikusi", -"boards": "Plakak", -"tools": "Erremintak", -"help": "Laguntza", -"new_project": " Proiektu berria ", -"open_project": "Ireki proiektua", -"examples": "Adibideak", -"templates": "Ereduak", -"save": "Gorde", -"save_as": "Gorde honela", -"import_block": "Blokea inportatu", -"export_as_block": "Blokea bezala esportatu", -"export": "Esportatu", -"verilog": "Verilog", -"pcf": "PCF", -"testbench": "Testbench", -"gtkwave": "GTKWave", -"clone_selected": "Aukeratua klonatu", -"remove_selected": "Aukeratua ezabatu", -"clear_all": "Dena ezabatu", -"image_path": "Ruta de la imagen", -"remote_hostname": "Remote hostname", -"language": "Hizkuntza", -"english": "Ingelesa", -"spanish": "Gaztelera", -"basque" : "Euskera", -"galician": "Galiziako", -"reset_view": "Bista reseteatu", -"verify": "Egiaztatu", -"build": "Sintetizatu", -"upload": "Kargatu", -"sync_remote_files": "Synchronize remote files ...", -"execute_remote": "Execute remote {{label}} ...", -"toolchain": "Toolchain", -"install": "Instalatu", -"update": "Freskatu", -"remove": "Ezabatu", -"toolchain_not_installed": "Toolchain not installed. Please, install the toolchain", -"drivers": "Drivers", -"enable": "Enable", -"drivers_enabled": "Drivers enabled", -"disable": "Disable", -"drivers_disabled": "Drivers disabled", -"homebrew_required": "Homebrew is required", -"unplug_and_reconnect": "Unplug and reconnect the board", -"install_drivers_windows": "

FTDI driver installation instructions

  1. Connect the FPGA board
  2. Replace the (Interface 0) driver of the board by libusbK
  3. Unplug and reconnect the board

Note: not fully working with Windows 10 + USB 3.0

", -"uninstall_drivers_windows": "

FTDI driver uninstallation instructions

  1. Find the FPGA USB Device
  2. Select the board interface and uninstall the driver
", -"view_license": "Lizentzia ikusi", -"version": "Bertsioa", -"documentation": "Documentazioa", -"source_code": "Jatorrizko kodea", -"community_forum": "Komunitatearen foroa", -"about_icestudio": "Icestudio informazioa", -"basic": "Basikoa", -"code": "Kodea", -"info": "Info", -"input": "Sarrera", -"output": "Irteera", -"bit": "Bit", -"config": "Config", -"pull_up": "Pull up", -"pull_up_inv": "Pull up inv", -"tri_state": "Tri-state", -"logic": "Logika", -"comb": "Comb", -"demux_1_2": "Demux 1:2", -"demux_1_4": "Demux 1:4", -"demux_1_8": "Demux 1:8", -"hex_7seg_cc": "Hex 7 Segment CC", -"hex_7seg_ca": "Hex 7 Segment CA", -"mux_2_1": "Mux 2:1", -"mux_4_1": "Mux 4:1", -"gate": "Gate", -"and": "And", -"nand": "Nand", -"nor": "Nor", -"not": "Not", -"or": "Or", -"xnor": "Xnor", -"xor": "Xor", -"sec": "Sec", -"dff_ar": "Bistable D asink", -"dff_sr": "Bistable D", -"tff_ar": "Bistable T asink", -"tff_sr": "Bistable T", -"1_basic": "1. Basikoa", -"1_led_on": "1. Led-a piztu", -"2_switch_led": "2. Etengailua led batekin", -"3_switch_and_gate": "3. Etengailua and atearekin", -"read_only": "Irakurtzeko soilik", -"untitled": "Izenik gabe", -"enter_project_title": "Proiektuari izena jarri", -"load_project_confirmation": "Proiektu hau ezabatuko da. Proiektua irekitzen jarraitu nahi duzu?", -"enter_project_image_path": "Proiektuaren irudi bidea sartu", -"enter_remote_hostname": "Enter the remote hostname user@host (experimental)", -"wrong_remote_hostname": "Wrong remote hostname {{name}}", -"remote_host_not_connected": "Remote host {{name}} not connected", -"clear_all_confirmation": "¿Dena ezabatu nahi duzu?", -"remove_block_confirmation": "¿Aukeratutako blokea ezabatu nahi duzu?", -"change_board_confirmation": "FPGAaren E/S configurazioa galduko da. {{name}} plaka aldatu nahi duzu?", -"board_selected": "{{name}} plaka aukeratu", -"remove_toolchain_confirmation": "The toolchain will be removed. Do you want to continue?", -"toolchain_removed": "Toolchain ezabatuta", -"project_created": "{{name}} proiektu sortuta ", -"project_loaded": "{{name}} proiektua irekita", -"wrong_project_format": "Proiektu formatua okerra: {{name}}", -"project_saved": "{{name}} proiektua gordeta", -"block_imported": "{{name}} blokea importatua", -"block_exported_as": "Blokea {{name}} bezala esportatua", -"verilog_exported": "Verilog kodea esportatua", -"pcf_exported": "PCF fitxategia esportatua", -"testbench_exported": "Testbench esportatua", -"gtkwave_exported": "GTKWave esportatua", -"enter_block_label": "Blokearen etiketa sartu", -"label_updated": "Etiketa freskatua", -"enter_block_ports": "Blokearen portuak sartu", -"wrong_block_format": "Blokearen formatua okerra: {{type}}", -"start_verify": "Egiaztapena hasi ...", -"start_build": "Sintetizatua hasi ...", -"start_upload": "Karga hasi ...", -"done_verify": "Egiaztapena egina", -"done_build": "Sintetizatua egina", -"done_upload": "Karga egina", -"generic_error": "Errorea: {{error}}", -"file_does_not_exist": "{{file}} fitxeroa ez da existitzen", -"board_not_detected": "Plaka ez da aurkitzen", -"unknown_board": "Plaka ezezaguna", -"fpga_io_not_defined": "FPGAren E/S portuak definitu gabe", -"duplicated_fpga_io": " FPGAren E/S portuak bikoiztuak", -"installing_toolchain": "Toolchain instalatzen", -"internet_connection_required": "Internet konexioa behar da", -"installation_completed": "Instalazioa amaitua", -"toolchain_installed": "Toolchain instalatua" -} diff --git a/app/resources/locale/eu_ES/eu_ES.po b/app/resources/locale/eu_ES/eu_ES.po new file mode 100644 index 000000000..d598e6817 --- /dev/null +++ b/app/resources/locale/eu_ES/eu_ES.po @@ -0,0 +1,666 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: eu_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "1. Basikoa" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "1. Led-a piztu" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "2. Etengailua led batekin" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "3. Etengailua and atearekin" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "" + +#: app/scripts/services/utils.service.js:480 +msgid "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" +msgstr "" + +#: app/scripts/services/utils.service.js:496 +msgid "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" +msgstr "" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "Icestudio informazioa" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "Basikoa" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "Euskera" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "Blokea {{name}} bezala esportatua" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "{{name}} blokea importatua" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "{{name}} plaka ez da aurkitzen" + +#: app/scripts/controllers/menu.js:407 app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "{{name}} paka aukeratul" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "Plakak" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "Sintetizatu" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "" + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "" + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "Dena ezabatu" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "Aukeratua klonatu" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "Kodea" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "Komunitatearen foroa" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "" + +#: app/scripts/services/tools.service.js:283 +msgid "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" +msgstr "" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "¿Dena ezabatu nahi duzu?" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "¿Aukeratutako blokea ezabatu nahi duzu?" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "Documentazioa" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "FPGAren E/S portuak bikoiztuak" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "Editatu" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "Enable" + +#: app/views/menu.html:134 +msgid "English" +msgstr "Ingelesa" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "Blokearen etiketa sartu" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "Blokearen portuak sartu" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "Proiektuaren irudi bidea sartu" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "Proiektuari izena jarri" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "Enter the remote hostname user@host (experimental)" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "Errorea: {{error}}" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "Adibideak" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "Execute remote {{label}} ..." + +#: app/views/menu.html:79 +msgid "Export" +msgstr "Esportatu" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "Blokea bezala esportatu" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "" + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "" + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "" + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "FPGAren E/S portuak definitu gabe" + +#: app/views/menu.html:23 +msgid "File" +msgstr "Fitxategia" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "{{file}} fitxeroa ez da existitzen" + +#: app/views/menu.html:158 +msgid "French" +msgstr "" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "GTKWave esportatua" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "Galiziako" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "Laguntza" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "Homebrew is required" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "Ruta de la imagen" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "Blokea inportatu" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "Info" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "Sarrera" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "" + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "Instalazioa amaitua" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "Toolchain instalatzen" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "Internet konexioa behar da" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "Etiketa freskatua" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "Hizkuntza" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "" + +#: app/views/menu.html:26 +msgid "New project" +msgstr "Proiektu berria" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "{{name}} proiektu sortuta" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "Ireki proiektua" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "Irteera" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "PCF fitxategia esportatua" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "{{name}} proiektua irekita" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "{{name}} proiektua gordeta" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "Irakurtzeko soilik" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "Remote host {{name}} not connected" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "Ezabatu" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "Aukeratua ezabatu" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "Bista reseteatu" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "Gorde" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "Gorde honela" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "Jatorrizko kodea" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "Gaztelera" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "Synchronize remote files ..." + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "Ereduak" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "Testbench esportatua" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "Testbench esportatua" + +#: app/scripts/controllers/menu.js:403 +msgid "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" +msgstr "" +"FPGAaren E/S configurazioa galduko da. {{name}} plaka aldatu nahi duzu?" + +#: app/scripts/controllers/menu.js:117 app/scripts/controllers/menu.js:94 +msgid "" +"The current project will be removed. Do you want to continue loading the " +"project?" +msgstr "Proiektu hau ezabatuko da. Proiektua irekitzen jarraitu nahi duzu?" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:291 +msgid "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" +msgstr "" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "Toolchain" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "Toolchain instalatua" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "Toolchain ezabatuta" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "Erremintak" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "Plaka ezezaguna" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "Kargatu" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "Egiaztatu" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "Verilog kodea esportatua" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "Bertsioa" + +#: app/views/menu.html:170 +msgid "View" +msgstr "Ikusi" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "Lizentzia ikusi" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "Blokearen formatua okerra: {{type}}" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "Proiektu formatua okerra: {{name}}" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "And" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "Bit" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "Comb" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "Config" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "Demux 1:2" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "Demux 1:4" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "Demux 1:8" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "Bistable D asink" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "Bistable D" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "Sintetizatua egina" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "Karga egina" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "Egiaztapena egina" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "Gate" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "Hex 7 Segment CA" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "Hex 7 Segment CC" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "Logika" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "Mux 2:1" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "Mux 4:1" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "Nand" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "Nor" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "Not" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "Or" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "Pull up" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "Pull up inv" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "Sec" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "Sintetizatua hasi ..." + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "Karga hasi ..." + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "Egiaztapena hasi ..." + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "Bistable T asink" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "Bistable T" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "Tri-state" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "Izenik gabe" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "Xnor" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "Xor" diff --git a/app/resources/locale/fr-FR.json b/app/resources/locale/fr-FR.json deleted file mode 100644 index f1fce8e71..000000000 --- a/app/resources/locale/fr-FR.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "file": "Fichier", - "edit": "Édition", - "view": "Vue", - "boards": "Cartes", - "tools": "Outils", - "help": "Aide", - "new_project": "Nouveau projet", - "open_project": "Ouvrir un projet", - "examples": "Exemples", - "templates": "Modèles", - "save": "Sauvegarder", - "save_as": "Sauvegarder sous ...", - "import_block": "Importer un bloc", - "export_as_block": "Exporter un bloc", - "export_verilog": "Exporter en Verilog", - "export_pcf": "Exporter en PCF", - "export_testbench": "Exporter le banc de tests", - "export_gtkwave": "Exporter en GTKWave", - "clone_selected": "Cloner la selection", - "remove_selected": "Supprimer la selection", - "clear_all": "Tout nettoyer ", - "image_path": "Chemin image", - "remote_hostname": "hostname distant", - "language": "Langage", - "english": "Anglais", - "spanish": "Espagnole", - "galician": "Galois", - "basque": "Basque", - "reset_view": "Reinitialiser la vue", - "verify": "Verifier", - "build": "Construire", - "upload": "Télécharger", - "sync_remote_files": "Synchroniser les fichiers distants ...", - "execute_remote": "Executer à distance {{label}} ...", - "install_toolchain": "Installer la toolchain", - "upgrade_toolchain": "Mettre la toolchain à jour", - "remove_toolchain": "Supprimer la toolchain", - "toolchain_not_installed": "La toolchain n'est pas à jour. Installer, ou mettre à jour svp", - "enable_drivers": "Activer le pilote", - "drivers_enabled": "Pilote activé", - "disable_drivers": "Désactiver le pilote", - "drivers_disabled": "Pilote désactivé", - "homebrew_required": "Homebrew est requis", - "unplug_and_reconnect": "Débrancher et reconnecter la carte", - "install_drivers_windows": "

Instructions d'installation du pilote FTDI

  1. Connecter la carte FPGA
  2. Remplacer le pilote (Interface 0) de la carte par libusbK
  3. Débrancher puis rebrancher la carte

Note: ne fonctionne pas complètement bien avec Windows 10 + USB 3.0

", - "uninstall_drivers_windows": "

Instructions de désinstallation du pilote FTDI

  1. Trouver le périphérique USB FPGA
  2. Sélectionner la carte interface et désinstaller le pilote
", - "view_license": "Voir la licence", - "version": "Version", - "documentation": "Documentation", - "source_code": "Code source", - "community_forum": "Forum communautaire", - "about_icestudio": "À propos d'Icestudio", - "basic": "Basique", - "code": "Code", - "info": "Info", - "input": "Entrée", - "output": "Sortie", - "bit": "Bit", - "config": "Configuration", - "pull_up": "Pull up", - "pull_up_inv": "Pull up inv", - "tri_state": "Tri-state", - "logic": "Logique", - "comb": "Combinatoire", - "demux_1_2": "Démultiplexeur 1:2", - "demux_1_4": "Démultiplexeur 1:4", - "demux_1_8": "Démultiplexeur 1:8", - "hex_7seg_cc": "Hex 7 Segment CC", - "hex_7seg_ca": "Hex 7 Segment CA", - "mux_2_1": "Multiplexeur 2:1", - "mux_4_1": "Multiplexeur 4:1", - "gate": "Porte", - "and": "Et", - "nand": "Non Et", - "nor": "Non Ou", - "not": "Non", - "or": "Ou", - "xnor": "Xnor", - "xor": "Xor", - "sec": "Sec", - "dff_ar": "D flip-flop async", - "dff_sr": "D flip-flop", - "tff_ar": "T flip-flop async", - "tff_sr": "T flip-flop", - "1_basic": "1. Basique", - "1_led_on": "1. Led on", - "2_switch_led": "2. Switch led", - "3_switch_and_gate": "3. Switch and gate", - "read_only": "Lecture seule", - "untitled": "sans titre", - "enter_project_title": "Entrer un nom de projet", - "load_project_confirmation": "Le projet actuel sera supprimé. Continuer de charger le projet ?", - "enter_project_image_path": "Entrer le chemin image du projet", - "enter_remote_hostname": "Entrer le hostname distant user@host (experimentale)", - "wrong_remote_hostname": "Mauvais hostname distant {{name}}", - "remote_host_not_connected": "Remote host {{name}} not connected", - "clear_all_confirmation": "Voulez vous tout nettoyer ?", - "remove_block_confirmation": "Voulez vous supprimer le bloc séléctionné ?", - "change_board_confirmation": "La configuration des entrées sorties du FPGA actuel va être perdue. Voulez vous changer pour la carte {{name}} ?", - "board_selected": "Carte {{name}} séléctionnée", - "remove_toolchain_confirmation": "Les répertoires de configuration d'Icestudio et apio vont être supprimés. Voulez-vous continuer ?", - "toolchain_removed": "Toolchain supprimée", - "project_created": "Nouveau projet {{name}} créé", - "project_loaded": "Projet {{name}} chargé", - "wrong_project_format": "Mauvais format de projet: {{name}}", - "project_saved": "Projet {{name}} sauvegardé", - "block_imported": "Bloc {{name}} importé", - "block_exported_as": "Bloc exporté comme {{name}}", - "verilog_exported": "Code Verilog exporté", - "pcf_exported": "Fichier PCF exporté", - "testbench_exported": "Banc de tests exporté", - "gtkwave_exported": "GTKWave exporté", - "enter_block_label": "Entrer le titre du bloc", - "label_updated": "Titre mis à jour", - "enter_block_ports": "Entrer les port du bloc", - "wrong_block_format": "Mauvais format de bloc: {{type}}", - "start_verify": "Début de la verification ...", - "start_build": "Début de la construction ...", - "start_upload": "Début du téléchargement ...", - "done_verify": "Vérification faite", - "done_build": "Construction terminée", - "done_upload": "Téléchargement terminé", - "generic_error": "Erreur: {{error}}", - "file_does_not_exist": "Le fichier {{file}} n'existe pas", - "board_not_detected": "Carte non détectée", - "unknown_board": "Carte inconnue", - "fpga_io_not_defined": "Ports d'entrée sortie FPGA non définits.", - "duplicated_fpga_io": "Ports d'entrée sortie FPGA dupliqué", - "installing_toolchain": "Installation de la toolchain", - "internet_connection_required": "Une connexion internet est requise", - "installation_completed": "Installation terminée", - "toolchain_installed": "La toolchain est installée" -} diff --git a/app/resources/locale/fr_FR/fr_FR.po b/app/resources/locale/fr_FR/fr_FR.po new file mode 100644 index 000000000..78d2158be --- /dev/null +++ b/app/resources/locale/fr_FR/fr_FR.po @@ -0,0 +1,675 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "1. Basique" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "1. Led on" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "2. Switch led" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "3. Switch and gate" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "Débrancher et reconnecter la carte" + +#: app/scripts/services/utils.service.js:480 +msgid "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" +msgstr "" +"

Instructions d'installation du pilote FTDI

  1. Connecter la " +"carte FPGA
  2. Remplacer le pilote (Interface 0) de la carte par " +"libusbK
  3. Débrancher puis rebrancher la carte
" + +#: app/scripts/services/utils.service.js:496 +msgid "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" +msgstr "" +"

Instructions de désinstallation du pilote FTDI

  1. Trouver le " +"périphérique USB FPGA
  2. Sélectionner la carte interface et " +"désinstaller le pilote
" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "À propos d'Icestudio" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "Basique" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "Basque" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "Bloc exporté comme {{name}}" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "Bloc {{name}} importé" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "Carte {{name}} non détectée" + +#: app/scripts/controllers/menu.js:407 app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "Carte {{name}} séléctionnée" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "Cartes" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "Construire" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "" + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "" + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "Tout nettoyer" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "Cloner la selection" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "Code" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "Forum communautaire" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "" + +#: app/scripts/services/tools.service.js:283 +msgid "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" +msgstr "" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "Voulez vous tout nettoyer?" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "Voulez vous supprimer le bloc séléctionné?" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "Documentation" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "Pilote" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "Pilote désactivé" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "Pilote activé" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "Ports d'entrée sortie FPGA dupliqué" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "Édition" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "" + +#: app/views/menu.html:134 +msgid "English" +msgstr "Anglais" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "Entrer le titre du bloc" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "Entrer les port du bloc" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "Entrer le chemin image du projet" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "Entrer un nom de projet" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "Entrer le hostname distant user@host (experimentale)" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "Erreur: {{error}}" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "Exemples" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "Executer à distance {{label}} ..." + +#: app/views/menu.html:79 +msgid "Export" +msgstr "Exporter" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "Exporter un bloc" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "" + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "" + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "" + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "Ports d'entrée sortie FPGA non définits" + +#: app/views/menu.html:23 +msgid "File" +msgstr "Fichier" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "Le fichier {{file}} n'existe pas" + +#: app/views/menu.html:158 +msgid "French" +msgstr "Français" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "GTKWave exporté" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "Galois" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "Aide" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "Homebrew est requis" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "Chemin image" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "Importer un bloc" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "Info" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "Entrée" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "" + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "Installation terminée" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "Installation de la toolchain" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "Une connexion internet est requise" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "Titre mis à jour" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "Langage" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "" + +#: app/views/menu.html:26 +msgid "New project" +msgstr "Nouveau projet" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "Nouveau projet {{name}} créé" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "Ouvrir un projet" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "Sortie" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "Fichier PCF exporté" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "Projet {{name}} chargé" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "Projet {{name}} sauvegardé" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "Lecture seule" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "Remote host {{name}} not connected" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "Hostname distant" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "Supprimer la selection" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "Reinitialiser la vue" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "Sauvegarder" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "Sauvegarder sous" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "Code source" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "Espagnole" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "Synchroniser les fichiers distants ..." + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "Modèles" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "Banc de tests exporté" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "Banc de tests exporté" + +#: app/scripts/controllers/menu.js:403 +msgid "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" +msgstr "" +"La configuration des entrées sorties du FPGA actuel va être perdue. Voulez " +"vous changer pour la carte {{name}}?" + +#: app/scripts/controllers/menu.js:117 app/scripts/controllers/menu.js:94 +msgid "" +"The current project will be removed. Do you want to continue loading the " +"project?" +msgstr "Le projet actuel sera supprimé. Continuer de charger le projet?" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "" +"Les répertoires de configuration d'Icestudio et apio vont être supprimés. " +"Voulez-vous continuer?" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:291 +msgid "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" +msgstr "" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "Toolchain" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "La toolchain est installée" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "La toolchain n'est pas à jour" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "La toolchain n'est pas à jour. Installer, ou mettre à jour svp" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "Toolchain supprimée" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "Outils" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "Carte inconnue" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "Télécharger" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "Verifier" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "Code Verilog exporté" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "Version" + +#: app/views/menu.html:170 +msgid "View" +msgstr "Vue" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "Voir la licence" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "Mauvais format de bloc: {{type}}" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "Mauvais format de projet: {{name}}" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "Mauvais hostname distant {{name}}" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "Et" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "Bit" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "Combinatoire" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "Configuration" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "Démultiplexeur 1:2" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "Démultiplexeur 1:4" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "Démultiplexeur 1:8" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "D flip-flop async" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "D flip-flop" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "Construction terminée" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "Téléchargement terminé" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "Vérification faite" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "Porte" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "Hex 7 Segment CA" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "Hex 7 Segment CC" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "Logique" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "Multiplexeur 2:1" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "Multiplexeur 4:1" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "Non Et" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "Non Ou" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "Non" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "Ou" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "Pull up" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "Pull up inv" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "Séquentiel" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "Début de la construction ..." + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "Début du téléchargement ..." + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "Début de la verification ..." + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "T flip-flop async" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "T flip-flop" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "Tri-state" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "sans titre" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "Xnor" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "Xor" diff --git a/app/resources/locale/gl.json b/app/resources/locale/gl.json deleted file mode 100644 index 33efcaa1f..000000000 --- a/app/resources/locale/gl.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "file": "Ficheiro", - "edit": "Editar", - "view": "Ver", - "boards": "Placas", - "tools": "Ferramentas", - "help": "Axuda", - "new_project": "Novo proxecto", - "open_project": "Abrir proxecto", - "examples": "Exemplos", - "templates": "Modelos", - "save": "Gardar", - "save_as": "Gardar como", - "import_block": "Importar bloque", - "export_as_block": "Exportar como bloque", - "export": "Exportar", - "verilog": "Verilog", - "pcf": "PCF", - "testbench": "Testbench", - "gtkwave": "GTKWave", - "clone_selected": "Clonar seleccionado", - "remove_selected": "Suprimir seleccionado", - "clear_all": "Suprimir todo", - "image_path": "Ruta da imaxe", - "remote_hostname": "Remote hostname", - "language": "Idioma", - "english": "Inglés", - "spanish": "Castelán", - "galician": "Galego", - "basque": "Euskera", - "reset_view": "Restablecer vista", - "verify": "Verificar", - "build": "Sintetizar", - "upload": "Cargar", - "sync_remote_files": "Synchronize remote files ...", - "execute_remote": "Execute remote {{label}} ...", - "toolchain": "Toolchain", - "install": "Instalar", - "update": "Actualizar", - "remove": "Eliminar", - "toolchain_not_installed": "Toolchain not installed. Please, install the toolchain", - "drivers": "Drivers", - "enable": "Enable", - "drivers_enabled": "Drivers enabled", - "disable": "Disable", - "drivers_disabled": "Drivers disabled", - "homebrew_required": "Homebrew is required", - "unplug_and_reconnect": "Unplug and reconnect the board", - "install_drivers_windows": "

FTDI driver installation instructions

  1. Connect the FPGA board
  2. Replace the (Interface 0) driver of the board by libusbK
  3. Unplug and reconnect the board

Note: not fully working with Windows 10 + USB 3.0

", - "uninstall_drivers_windows": "

FTDI driver uninstallation instructions

  1. Find the FPGA USB Device
  2. Select the board interface and uninstall the driver
", - "view_license": "Ver licenza", - "version": "Versión", - "documentation": "Documentación", - "source_code": "Código fonte", - "community_forum": "Foro da comunidade", - "about_icestudio": "Acerca de Icestudio", - "basic": "Básico", - "code": "Código", - "info": "Info", - "input": "Entrada", - "output": "Saída", - "bit": "Bit", - "config": "Config", - "pull_up": "Pull up", - "pull_up_inv": "Pull up inv", - "tri_state": "Tri-state", - "logic": "Lóxica", - "comb": "Comb", - "demux_1_2": "Demux 1:2", - "demux_1_4": "Demux 1:4", - "demux_1_8": "Demux 1:8", - "hex_7seg_cc": "Hex 7 Segment CC", - "hex_7seg_ca": "Hex 7 Segment CA", - "mux_2_1": "Mux 2:1", - "mux_4_1": "Mux 4:1", - "gate": "Gate", - "and": "And", - "nand": "Nand", - "nor": "Nor", - "not": "Not", - "or": "Or", - "xnor": "Xnor", - "xor": "Xor", - "sec": "Sec", - "dff_ar": "Bistable D asinc", - "dff_sr": "Bistable D", - "tff_ar": "Bistable T asinc", - "tff_sr": "Bistable T", - "1_basic": "1. Básico", - "1_led_on": "1. Acender led", - "2_switch_led": "2. Interruptor con led", - "3_switch_and_gate": "3. Interruptor con porta and", - "read_only": "Só lectura", - "untitled": "Sen título", - "enter_project_title": "Introduza o título do proxecto", - "load_project_confirmation": "O proxecto actual perderase. ¿Desexa continuar abrindo o proxecto?", - "enter_project_image_path": "Introduza a ruta da imaxe do proxecto", - "enter_remote_hostname": "Enter the remote hostname user@host (experimental)", - "wrong_remote_hostname": "Wrong remote hostname {{name}}", - "remote_host_not_connected": "Remote host {{name}} not connected", - "clear_all_confirmation": "¿Desexa borrar todo?", - "remove_block_confirmation": "¿Desexa eliminar o bloque seleccionado?", - "change_board_confirmation": "A configuración actual de E/S da FPGA perderase. ¿Desexa cambiar á placa {{name}}?", - "board_selected": "Placa {{name}} seleccionada", - "remove_toolchain_confirmation": "The toolchain will be removed. Do you want to continue?", - "toolchain_removed": "Toolchain eliminada", - "project_created": "Novo proxecto {{name}} creado", - "project_loaded": "Proxecto {{name}} cargado", - "wrong_project_format": "Formato de proxecto incorrecto: {{name}}", - "project_saved": "Proxecto {{name}} gardado", - "block_imported": "Bloque {{name}} importado", - "block_exported_as": "Bloque exportado como {{name}}", - "verilog_exported": "Código Verilog exportado", - "pcf_exported": "Ficheiro PCF exportado", - "testbench_exported": "Testbench exportado", - "gtkwave_exported": "GTKWave exportado", - "enter_block_label": "Introduza a etiqueta para o bloque", - "label_updated": "Etiqueta actualizada", - "enter_block_ports": "Introduza os portos para o bloque", - "wrong_block_format": "Formato de bloque incorrecto: {{type}}", - "start_verify": "Iniciar a verificación...", - "start_build": "Iniciar a sintetizado...", - "start_upload": "Iniciar a carga...", - "done_verify": "Verificación realizada", - "done_build": "Sintetizado realizado", - "done_upload": "Carga realizada", - "generic_error": "Error: {{error}}", - "file_does_not_exist": "O ficheiro {{file}} non existe", - "board_not_detected": "Placa non detectada", - "unknown_board": "Placa desconocida", - "fpga_io_not_defined": "Portos E/S da FPGA non definidos", - "duplicated_fpga_io": "Portos E/S da FPGA duplicados", - "installing_toolchain": "Instalando a toolchain", - "internet_connection_required": "Requírese dunha conexión a Internet", - "installation_completed": "Instalación completada", - "toolchain_installed": "Toolchain instalada" -} diff --git a/app/resources/locale/gl_ES/gl_ES.po b/app/resources/locale/gl_ES/gl_ES.po new file mode 100644 index 000000000..ef3ad457e --- /dev/null +++ b/app/resources/locale/gl_ES/gl_ES.po @@ -0,0 +1,667 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: gl_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "1. Básico" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "1. Acender led" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "2. Interruptor con led" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "3. Interruptor con porta and" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "" + +#: app/scripts/services/utils.service.js:480 +msgid "" +"

FTDI driver installation instructions

  1. Connect the FPGA " +"board
  2. Replace the (Interface 0) driver of the board by " +"libusbK
  3. Unplug and reconnect the board
" +msgstr "" + +#: app/scripts/services/utils.service.js:496 +msgid "" +"

FTDI driver uninstallation instructions

  1. Find the FPGA USB " +"Device
  2. Select the board interface and uninstall the driver
" +msgstr "" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "Acerca de Icestudio" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "Básico" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "Euskera" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "Bloque exportado como {{name}}" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "Bloque {{name}} importado" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "Placa {{name}} non detectada" + +#: app/scripts/controllers/menu.js:407 app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "Placa {{name}} seleccionada" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "Placas" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "Sintetizar" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "" + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "" + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "Suprimir todo" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "Clonar seleccionado" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "Código" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "Foro da comunidade" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "" + +#: app/scripts/services/tools.service.js:283 +msgid "" +"Default toolchain not found. Toolchain will be downloaded. This operation " +"requires Internet connection. Do you want to continue?" +msgstr "" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "¿Desexa borrar todo?" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "¿Desexa eliminar o bloque seleccionado?" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "Documentación" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "Portos E/S da FPGA duplicados" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "Editar" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "" + +#: app/views/menu.html:134 +msgid "English" +msgstr "Inglés" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "Introduza a etiqueta para o bloque" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "Introduza os portos para o bloque" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "Introduza a ruta da imaxe do proxecto" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "Introduza o título do proxecto" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "Enter the remote hostname user@host (experimental)" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "Error: {{error}}" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "Exemplos" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "Execute remote {{label}} ..." + +#: app/views/menu.html:79 +msgid "Export" +msgstr "Exportar" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "Exportar como bloque" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "" + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "" + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "" + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "Portos E/S da FPGA non definidos" + +#: app/views/menu.html:23 +msgid "File" +msgstr "Ficheiro" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "O ficheiro {{file}} non existe" + +#: app/views/menu.html:158 +msgid "French" +msgstr "" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "GTKWave exportado" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "Galego" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "Axuda" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "Ruta da imaxe" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "Importar bloque" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "Info" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "Entrada" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "" + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "Instalación completada" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "Instalando a toolchain" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "Requírese dunha conexión a Internet" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "Etiqueta actualizada" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "Idioma" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "" + +#: app/views/menu.html:26 +msgid "New project" +msgstr "Novo proxecto" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "Novo proxecto {{name}} creado" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "Abrir proxecto" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "Saída" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "Ficheiro PCF exportado" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "Proxecto {{name}} cargado" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "Proxecto {{name}} gardado" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "Só lectura" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "Eliminar" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "Suprimir seleccionado" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "Restablecer vista" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "Gardar" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "Gardar como" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "Código fonte" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "Castelán" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "Synchronize remote files ..." + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "Modelos" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "Testbench" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "Testbench exportado" + +#: app/scripts/controllers/menu.js:403 +msgid "" +"The current FPGA I/O configuration will be lost. Do you want to change to " +"{{name}} board?" +msgstr "" +"A configuración actual de E/S da FPGA perderase. ¿Desexa cambiar á placa " +"{{name}}?" + +#: app/scripts/controllers/menu.js:117 app/scripts/controllers/menu.js:94 +msgid "" +"The current project will be removed. Do you want to continue loading the " +"project?" +msgstr "O proxecto actual perderase. ¿Desexa continuar abrindo o proxecto?" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:291 +msgid "" +"The toolchain will be updated. This operation requires Internet connection. " +"Do you want to continue?" +msgstr "" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "Toolchain" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "Toolchain instalada" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "Toolchain eliminada" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "Ferramentas" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "Placa desconocida" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "Cargar" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "Verificar" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "Código Verilog exportado" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "Versión" + +#: app/views/menu.html:170 +msgid "View" +msgstr "Ver" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "Ver licenza" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "Formato de bloque incorrecto: {{type}}" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "Formato de proxecto incorrecto: {{name}}\"" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "And" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "Bit" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "Comb" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "Config" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "Demux 1:2" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "Demux 1:4" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "Demux 1:8" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "Bistable D asinc" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "Bistable D" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "Sintetizado realizado" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "Carga realizada" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "Verificación realizada" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "Gate" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "Hex 7 Segment CA" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "Hex 7 Segment CC" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "Lóxica" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "Mux 2:1" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "Mux 4:1" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "Nand" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "Nor" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "Not" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "Or" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "Pull up" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "Pull up inv" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "Sec" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "Iniciar a sintetizado ..." + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "Iniciar a carga ..." + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "Iniciar a verificación ..." + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "Bistable T asinc" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "Bistable T" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "Tri-state" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "Sen título" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "Xnor" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "Xor" diff --git a/app/resources/locale/template.pot b/app/resources/locale/template.pot new file mode 100644 index 000000000..a82a3e74b --- /dev/null +++ b/app/resources/locale/template.pot @@ -0,0 +1,646 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: \n" + +#. 1. Basic +#: app/resources/examples/labels.js:4 +msgid "1_basic" +msgstr "" + +#. 1. Led on +#: app/resources/examples/labels.js:6 +msgid "1_led_on" +msgstr "" + +#. 2. Switch led +#: app/resources/examples/labels.js:8 +msgid "2_switch_led" +msgstr "" + +#. 3. Switch and gate +#: app/resources/examples/labels.js:10 +msgid "3_switch_and_gate" +msgstr "" + +#: app/scripts/services/utils.service.js:414 +#: app/scripts/services/utils.service.js:489 +msgid "Unplug and reconnect the board" +msgstr "" + +#: app/scripts/services/utils.service.js:480 +msgid "

FTDI driver installation instructions

  1. Connect the FPGA board
  2. Replace the (Interface 0) driver of the board by libusbK
  3. Unplug and reconnect the board
" +msgstr "" + +#: app/scripts/services/utils.service.js:496 +msgid "

FTDI driver uninstallation instructions

  1. Find the FPGA USB Device
  2. Select the board interface and uninstall the driver
" +msgstr "" + +#: app/views/menu.html:271 +msgid "About Icestudio" +msgstr "" + +#: app/views/menu.html:281 +msgid "Basic" +msgstr "" + +#: app/views/menu.html:152 +msgid "Basque" +msgstr "" + +#: app/scripts/services/common.service.js:94 +msgid "Block exported as {{name}}" +msgstr "" + +#: app/scripts/services/common.service.js:75 +msgid "Block {{name}} imported" +msgstr "" + +#: app/scripts/services/tools.service.js:218 +msgid "Board {{name}} not detected" +msgstr "" + +#: app/scripts/controllers/menu.js:407 +#: app/scripts/controllers/menu.js:413 +msgid "Board {{name}} selected" +msgstr "" + +#: app/views/menu.html:185 +msgid "Boards" +msgstr "" + +#: app/views/menu.html:203 +msgid "Build" +msgstr "" + +#: app/scripts/services/tools.service.js:406 +msgid "Check Internet connection..." +msgstr "" + +#: app/scripts/services/tools.service.js:414 +msgid "Check Python..." +msgstr "" + +#: app/views/menu.html:112 +msgid "Clear all" +msgstr "" + +#: app/views/menu.html:106 +msgid "Clone selected" +msgstr "" + +#: app/views/menu.html:284 +msgid "Code" +msgstr "" + +#: app/views/menu.html:267 +msgid "Community forum" +msgstr "" + +#: app/views/menu.html:179 +msgid "Datasheet" +msgstr "" + +#: app/scripts/controllers/menu.js:394 +msgid "Datasheet not defined" +msgstr "" + +#: app/scripts/services/tools.service.js:283 +msgid "Default toolchain not found. Toolchain will be downloaded. This operation requires Internet connection. Do you want to continue?" +msgstr "" + +#: app/views/menu.html:241 +msgid "Disable" +msgstr "" + +#: app/scripts/controllers/menu.js:314 +msgid "Do you want to clear all?" +msgstr "" + +#: app/scripts/controllers/menu.js:327 +msgid "Do you want to remove the selected block?" +msgstr "" + +#: app/views/menu.html:260 +msgid "Documentation" +msgstr "" + +#: app/views/menu.html:234 +msgid "Drivers" +msgstr "" + +#: app/scripts/services/utils.service.js:411 +#: app/scripts/services/utils.service.js:474 +msgid "Drivers disabled" +msgstr "" + +#: app/scripts/services/utils.service.js:408 +#: app/scripts/services/utils.service.js:455 +msgid "Drivers enabled" +msgstr "" + +#: app/scripts/services/tools.service.js:230 +msgid "Duplicated FPGA I/O ports" +msgstr "" + +#: app/views/menu.html:99 +msgid "Edit" +msgstr "" + +#: app/views/menu.html:237 +msgid "Enable" +msgstr "" + +#: app/views/menu.html:134 +msgid "English" +msgstr "" + +#: app/scripts/services/graph.service.js:257 +#: app/scripts/services/graph.service.js:464 +#: app/scripts/services/graph.service.js:504 +msgid "Enter the block's label" +msgstr "" + +#: app/scripts/services/graph.service.js:409 +msgid "Enter the block's ports" +msgstr "" + +#: app/scripts/controllers/menu.js:290 +msgid "Enter the project's image path" +msgstr "" + +#: app/scripts/controllers/menu.js:72 +msgid "Enter the project's title" +msgstr "" + +#: app/scripts/controllers/menu.js:298 +msgid "Enter the remote hostname user@host (experimental)" +msgstr "" + +#: app/scripts/services/tools.service.js:306 +msgid "Error: default toolchain not found in '{{dir}}'" +msgstr "" + +#: app/scripts/services/tools.service.js:161 +msgid "Error: {{error}}" +msgstr "" + +#: app/views/menu.html:32 +msgid "Examples" +msgstr "" + +#: app/scripts/services/tools.service.js:189 +msgid "Execute remote {{label}} ..." +msgstr "" + +#: app/views/menu.html:79 +msgid "Export" +msgstr "" + +#: app/views/menu.html:75 +msgid "Export as block" +msgstr "" + +#: app/scripts/services/tools.service.js:438 +msgid "Extract default apio files..." +msgstr "" + +#: app/scripts/services/tools.service.js:448 +msgid "Extract default apio packages..." +msgstr "" + +#: app/scripts/services/tools.service.js:426 +msgid "Extract virtual env files..." +msgstr "" + +#: app/scripts/services/tools.service.js:224 +#: app/scripts/services/tools.service.js:227 +msgid "FPGA I/O ports not defined" +msgstr "" + +#: app/views/menu.html:23 +msgid "File" +msgstr "" + +#: app/scripts/services/tools.service.js:155 +msgid "File {{file}} does not exist" +msgstr "" + +#: app/views/menu.html:158 +msgid "French" +msgstr "" + +#: app/scripts/services/common.service.js:134 +msgid "GTKWave exported" +msgstr "" + +#: app/views/menu.html:146 +msgid "Galician" +msgstr "" + +#: app/views/menu.html:250 +msgid "Help" +msgstr "" + +#: app/scripts/services/utils.service.js:445 +msgid "Homebrew is required" +msgstr "" + +#: app/views/menu.html:119 +msgid "Image path" +msgstr "" + +#: app/views/menu.html:72 +msgid "Import block" +msgstr "" + +#: app/views/menu.html:285 +msgid "Info" +msgstr "" + +#: app/views/menu.html:286 +msgid "Input" +msgstr "" + +#: app/scripts/services/tools.service.js:443 +msgid "Install default apio..." +msgstr "" + +#: app/scripts/services/tools.service.js:492 +msgid "Installation completed" +msgstr "" + +#: app/scripts/services/tools.service.js:335 +#: app/scripts/services/tools.service.js:372 +msgid "Installing toolchain" +msgstr "" + +#: app/scripts/services/tools.service.js:408 +#: app/scripts/services/utils.service.js:448 +msgid "Internet connection required" +msgstr "" + +#: app/scripts/services/graph.service.js:261 +msgid "Label updated" +msgstr "" + +#: app/views/menu.html:130 +msgid "Language" +msgstr "" + +#: app/scripts/services/tools.service.js:431 +msgid "Make virtual env..." +msgstr "" + +#: app/views/menu.html:26 +msgid "New project" +msgstr "" + +#: app/scripts/services/common.service.js:31 +msgid "New project {{name}} created" +msgstr "" + +#: app/views/menu.html:29 +msgid "Open project" +msgstr "" + +#: app/views/menu.html:287 +msgid "Output" +msgstr "" + +#: app/scripts/services/common.service.js:114 +msgid "PCF file exported" +msgstr "" + +#: app/views/menu.html:116 +msgid "Preferences" +msgstr "" + +#: app/scripts/services/common.service.js:51 +msgid "Project {{name}} loaded" +msgstr "" + +#: app/scripts/services/common.service.js:63 +msgid "Project {{name}} saved" +msgstr "" + +#: app/scripts/services/tools.service.js:419 +msgid "Python 2.7 is required" +msgstr "" + +#: app/views/project.html:2 +msgid "Read only" +msgstr "" + +#: app/scripts/services/tools.service.js:256 +msgid "Remote host {{name}} not connected" +msgstr "" + +#: app/views/menu.html:124 +msgid "Remote hostname" +msgstr "" + +#: app/views/menu.html:219 +msgid "Remove" +msgstr "" + +#: app/views/menu.html:109 +msgid "Remove selected" +msgstr "" + +#: app/views/menu.html:224 +msgid "Reset default" +msgstr "" + +#: app/views/menu.html:102 +msgid "Reset view" +msgstr "" + +#: app/views/menu.html:65 +msgid "Save" +msgstr "" + +#: app/views/menu.html:68 +msgid "Save as" +msgstr "" + +#: app/views/menu.html:263 +msgid "Source code" +msgstr "" + +#: app/views/menu.html:140 +msgid "Spanish" +msgstr "" + +#: app/scripts/services/tools.service.js:178 +msgid "Synchronize remote files ..." +msgstr "" + +#: app/views/menu.html:49 +msgid "Templates" +msgstr "" + +#: app/views/menu.html:88 +msgid "Testbench" +msgstr "" + +#: app/scripts/services/common.service.js:124 +msgid "Testbench exported" +msgstr "" + +#: app/scripts/controllers/menu.js:403 +msgid "The current FPGA I/O configuration will be lost. Do you want to change to {{name}} board?" +msgstr "" + +#: app/scripts/controllers/menu.js:117 +#: app/scripts/controllers/menu.js:94 +msgid "The current project will be removed. Do you want to continue loading the project?" +msgstr "" + +#: app/scripts/services/tools.service.js:311 +msgid "The toolchain will be removed. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:299 +msgid "The toolchain will be restored to default. Do you want to continue?" +msgstr "" + +#: app/scripts/services/tools.service.js:291 +msgid "The toolchain will be updated. This operation requires Internet connection. Do you want to continue?" +msgstr "" + +#: app/views/menu.html:210 +msgid "Toolchain" +msgstr "" + +#: app/scripts/services/tools.service.js:493 +msgid "Toolchain installed" +msgstr "" + +#: app/scripts/services/tools.service.js:497 +msgid "Toolchain not installed" +msgstr "" + +#: app/scripts/services/tools.service.js:79 +#: app/scripts/services/utils.service.js:486 +#: app/scripts/services/utils.service.js:502 +msgid "Toolchain not installed. Please, install the toolchain" +msgstr "" + +#: app/scripts/services/tools.service.js:315 +msgid "Toolchain removed" +msgstr "" + +#: app/views/menu.html:197 +msgid "Tools" +msgstr "" + +#: app/scripts/services/tools.service.js:221 +msgid "Unknown board" +msgstr "" + +#: app/views/menu.html:206 +msgid "Upload" +msgstr "" + +#: app/views/menu.html:200 +msgid "Verify" +msgstr "" + +#: app/scripts/services/common.service.js:104 +msgid "Verilog code exported" +msgstr "" + +#: app/views/menu.html:256 +msgid "Version" +msgstr "" + +#: app/views/menu.html:170 +msgid "View" +msgstr "" + +#: app/views/menu.html:253 +msgid "View license" +msgstr "" + +#: app/scripts/services/graph.service.js:561 +msgid "Wrong block format: {{type}}" +msgstr "" + +#: app/scripts/services/common.service.js:54 +msgid "Wrong project format: {{name}}" +msgstr "" + +#: app/scripts/services/tools.service.js:253 +msgid "Wrong remote hostname {{name}}" +msgstr "" + +#. And +#: app/resources/blocks/labels.js:34 +msgid "and" +msgstr "" + +#. Bit +#: app/resources/blocks/labels.js:4 +msgid "bit" +msgstr "" + +#. Comb +#: app/resources/blocks/labels.js:16 +msgid "comb" +msgstr "" + +#. Config +#: app/resources/blocks/labels.js:6 +msgid "config" +msgstr "" + +#. Demux 1:2 +#: app/resources/blocks/labels.js:18 +msgid "demux_1_2" +msgstr "" + +#. Demux 1:4 +#: app/resources/blocks/labels.js:20 +msgid "demux_1_4" +msgstr "" + +#. Demux 1:8 +#: app/resources/blocks/labels.js:22 +msgid "demux_1_8" +msgstr "" + +#. D flip-flop async +#: app/resources/blocks/labels.js:50 +msgid "dff_ar" +msgstr "" + +#. D flip-flop async +#: app/resources/blocks/labels.js:52 +msgid "dff_sr" +msgstr "" + +#. Build done +#: app/scripts/services/tools.service.js:268 +msgid "done_build" +msgstr "" + +#. Upload done +#: app/scripts/services/tools.service.js:270 +msgid "done_upload" +msgstr "" + +#. Verification done +#: app/scripts/services/tools.service.js:266 +msgid "done_verify" +msgstr "" + +#. Gate +#: app/resources/blocks/labels.js:32 +msgid "gate" +msgstr "" + +#. Hex 7 Segment CA +#: app/resources/blocks/labels.js:26 +msgid "hex_7seg_ca" +msgstr "" + +#. Hex 7 Segment CC +#: app/resources/blocks/labels.js:24 +msgid "hex_7seg_cc" +msgstr "" + +#. Logic +#: app/resources/blocks/labels.js:14 +msgid "logic" +msgstr "" + +#. Mux 2:1 +#: app/resources/blocks/labels.js:28 +msgid "mux_2_1" +msgstr "" + +#. Mux 4:1 +#: app/resources/blocks/labels.js:30 +msgid "mux_4_1" +msgstr "" + +#. Nand +#: app/resources/blocks/labels.js:36 +msgid "nand" +msgstr "" + +#. Nor +#: app/resources/blocks/labels.js:38 +msgid "nor" +msgstr "" + +#. Not +#: app/resources/blocks/labels.js:40 +msgid "not" +msgstr "" + +#. Or +#: app/resources/blocks/labels.js:42 +msgid "or" +msgstr "" + +#. Pull up +#: app/resources/blocks/labels.js:8 +msgid "pull_up" +msgstr "" + +#. Pull up inv +#: app/resources/blocks/labels.js:10 +msgid "pull_up_inv" +msgstr "" + +#. Sec +#: app/resources/blocks/labels.js:48 +msgid "sec" +msgstr "" + +#. Start building ... +#: app/scripts/services/tools.service.js:45 +msgid "start_build" +msgstr "" + +#. Start uploading ... +#: app/scripts/services/tools.service.js:47 +msgid "start_upload" +msgstr "" + +#. Start verification ... +#: app/scripts/services/tools.service.js:43 +msgid "start_verify" +msgstr "" + +#. T flip-flop async +#: app/resources/blocks/labels.js:54 +msgid "tff_ar" +msgstr "" + +#. T flip-flop +#: app/resources/blocks/labels.js:56 +msgid "tff_sr" +msgstr "" + +#. Tri-state +#: app/resources/blocks/labels.js:12 +msgid "tri_state" +msgstr "" + +#: app/scripts/controllers/menu.js:73 +msgid "untitled" +msgstr "" + +#. Xnor +#: app/resources/blocks/labels.js:44 +msgid "xnor" +msgstr "" + +#. Xor +#: app/resources/blocks/labels.js:46 +msgid "xor" +msgstr "" diff --git a/app/scripts/app.js b/app/scripts/app.js index a748c4c7b..64234f1f6 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -3,10 +3,10 @@ angular .module('icestudio', [ 'ngRoute', - 'pascalprecht.translate', - 'ui.bootstrap' - ]).config(['$routeProvider', '$translateProvider', - function($routeProvider, $translateProvider) { + 'ui.bootstrap', + 'gettext' + ]).config(['$routeProvider', + function($routeProvider) { $routeProvider .when('/', { @@ -16,17 +16,8 @@ angular .otherwise({ redirectTo: '/' }); - $translateProvider.useStaticFilesLoader({ - prefix: 'resources/locale/', - suffix: '.json' - }); - - // Initial language - $translateProvider.preferredLanguage('en'); - //$translateProvider.useSanitizeValueStrategy('escape'); } ]) - .run(function(nodeFs) { - // console.log('Start'); + .run(function() { }); diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index e03fae639..2e330bfe7 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -3,7 +3,7 @@ angular.module('icestudio') .controller('MenuCtrl', function ($scope, $timeout, - $translate, + gettextCatalog, common, graph, tools, @@ -17,7 +17,9 @@ angular.module('icestudio') // Manage language profile.load(function() { - $translate.use(profile.data.language); + var lang = profile.data.language; + gettextCatalog.setCurrentLanguage(lang); + gettextCatalog.loadRemote('resources/locale/' + lang + '/' + lang + '.json'); }); var win = gui.Window.get(); win.on('close', function() { @@ -67,8 +69,8 @@ angular.module('icestudio') // File $scope.newProject = function() { - alertify.prompt($translate.instant('enter_project_title'), - $translate.instant('untitled'), + alertify.prompt(gettextCatalog.getString('Enter the project\'s title'), + gettextCatalog.getString('untitled'), function(evt, name) { if (name) { common.newProject(name); @@ -89,7 +91,7 @@ angular.module('icestudio') $scope.workingdir = utils.dirname(file.path) + utils.sep; if (!graph.isEmpty()) { - alertify.confirm($translate.instant('load_project_confirmation'), + alertify.confirm(gettextCatalog.getString('The current project will be removed. Do you want to continue loading the project?'), function() { common.openProject(file.path); $scope.currentProjectPath = file.path; @@ -112,7 +114,7 @@ angular.module('icestudio') $scope.openStoredProject = function(name, project) { if (project) { if (!graph.isEmpty()) { - alertify.confirm($translate.instant('load_project_confirmation'), + alertify.confirm(gettextCatalog.getString('The current project will be removed. Do you want to continue loading the project?'), function() { common.loadProject(name, project); $scope.currentProjectPath = ''; @@ -285,7 +287,7 @@ angular.module('icestudio') $scope.setImagePath = function() { var current = common.project.image; - alertify.prompt($translate.instant('enter_project_image_path'), (current) ? current : '', + alertify.prompt(gettextCatalog.getString('Enter the project\'s image path'), (current) ? current : '', function(evt, imagePath) { common.setImagePath(imagePath); }); @@ -293,7 +295,7 @@ angular.module('icestudio') $scope.setRemoteHostname = function() { var current = profile.data.remoteHostname; - alertify.prompt($translate.instant('enter_remote_hostname'), (current) ? current : '', + alertify.prompt(gettextCatalog.getString('Enter the remote hostname user@host (experimental)'), (current) ? current : '', function(evt, remoteHostname) { profile.data.remoteHostname = remoteHostname; }); @@ -302,13 +304,14 @@ angular.module('icestudio') $scope.selectLanguage = function(language) { if (profile.data.language != language) { profile.data.language = language; - $translate.use(language); + gettextCatalog.setCurrentLanguage(language); + gettextCatalog.loadRemote('resources/locale/' + language + '/' + language + '.json'); } } $scope.clearGraph = function() { if (!graph.isEmpty()) { - alertify.confirm($translate.instant('clear_all_confirmation'), + alertify.confirm(gettextCatalog.getString('Do you want to clear all?'), function() { common.clearProject(); }); @@ -321,7 +324,7 @@ angular.module('icestudio') $scope.removeSelected = function() { if (graph.hasSelection()) { - alertify.confirm($translate.instant('remove_block_confirmation'), + alertify.confirm(gettextCatalog.getString('Do you want to remove the selected block?'), function() { common.removeSelected(); }); @@ -388,7 +391,7 @@ angular.module('icestudio') gui.Shell.openExternal(boards.selectedBoard.info.datasheet); } else { - alertify.error($translate.instant('datasheet_not_defined')); + alertify.error(gettextCatalog.getString('Datasheet not defined')); } } @@ -397,17 +400,17 @@ angular.module('icestudio') $scope.selectBoard = function(board) { if (boards.selectedBoard.name != board.name) { if (!graph.isEmpty()) { - alertify.confirm($translate.instant('change_board_confirmation', { name: '' + board.info.label + '' }), + alertify.confirm(gettextCatalog.getString('The current FPGA I/O configuration will be lost. Do you want to change to {{name}} board?', { name: '' + board.info.label + '' }), function() { boards.selectBoard(board.name); graph.resetIOChoices(); - alertify.success($translate.instant('board_selected', { name: '' + board.info.label + '' })); + alertify.success(gettextCatalog.getString('Board {{name}} selected', { name: '' + board.info.label + '' })); }); } else { boards.selectBoard(board.name); graph.resetIOChoices(); - alertify.success($translate.instant('board_selected', { name: '' + board.info.label + '' })); + alertify.success(gettextCatalog.getString('Board {{name}} selected', { name: '' + board.info.label + '' })); } } } diff --git a/app/scripts/services/common.service.js b/app/scripts/services/common.service.js index c90db217c..37cf103b3 100644 --- a/app/scripts/services/common.service.js +++ b/app/scripts/services/common.service.js @@ -1,8 +1,8 @@ 'use strict'; angular.module('icestudio') - .service('common', ['$rootScope', '$translate', 'window', 'graph', 'boards', 'compiler', 'utils', - function($rootScope, $translate, window, graph, boards, compiler, utils) { + .service('common', ['$rootScope', 'gettextCatalog', 'window', 'graph', 'boards', 'compiler', 'utils', + function($rootScope, gettextCatalog, window, graph, boards, compiler, utils) { // Variables @@ -28,7 +28,7 @@ angular.module('icestudio') graph.clearAll(); graph.setState(this.project.state); this.updateProjectName(name); - alertify.success($translate.instant('project_created', { name: name })); + alertify.success(gettextCatalog.getString('New project {{name}} created', { name: name })); }; this.openProject = function(filepath) { @@ -48,10 +48,10 @@ angular.module('icestudio') this.project = project; boards.selectBoard(project.board); if (graph.loadGraph(project)) { - alertify.success($translate.instant('project_loaded', { name: name })); + alertify.success(gettextCatalog.getString('Project {{name}} loaded', { name: name })); } else { - alertify.error($translate.instant('wrong_project_format', { name: name })); + alertify.error(gettextCatalog.getString('Wrong project format: {{name}}', { name: name })); } }; @@ -60,7 +60,7 @@ angular.module('icestudio') this.updateProjectName(name); this.refreshProject(); utils.saveFile(filepath, this.project, function() { - alertify.success($translate.instant('project_saved', { name: name })); + alertify.success(gettextCatalog.getString('Project {{name}} saved', { name: name })); }, true); }; @@ -72,7 +72,7 @@ angular.module('icestudio') var name = utils.basename(filepath); graph.importBlock(name, block); _this.project.deps[name] = block; - alertify.success($translate.instant('block_imported', { name: name })); + alertify.success(gettextCatalog.getString('Block {{name}} imported', { name: name })); } }; })(this)); @@ -91,7 +91,7 @@ angular.module('icestudio') } } utils.saveFile(filepath, block, function() { - alertify.success($translate.instant('block_exported_as', { name: name })); + alertify.success(gettextCatalog.getString('Block exported as {{name}}', { name: name })); }, true); }; @@ -101,7 +101,7 @@ angular.module('icestudio') // Generate verilog code from project var verilog = compiler.generateVerilog(this.project); utils.saveFile(filepath, verilog, function() { - alertify.success($translate.instant('verilog_exported')); + alertify.success(gettextCatalog.getString('Verilog code exported')); }, false); }; @@ -111,7 +111,7 @@ angular.module('icestudio') // Generate pcf code from project var pcf = compiler.generatePCF(this.project); utils.saveFile(filepath, pcf, function() { - alertify.success($translate.instant('pcf_exported')); + alertify.success(gettextCatalog.getString('PCF file exported')); }, false); }; @@ -121,7 +121,7 @@ angular.module('icestudio') // Generate testbench code from project var testbench = compiler.generateTestbench(this.project); utils.saveFile(filepath, testbench, function() { - alertify.success($translate.instant('testbench_exported')); + alertify.success(gettextCatalog.getString('Testbench exported')); }, false); }; @@ -131,7 +131,7 @@ angular.module('icestudio') // Generate gtkwave code from project var gtkwave = compiler.generateGTKWave(this.project); utils.saveFile(filepath, gtkwave, function() { - alertify.success($translate.instant('gtkwave_exported')); + alertify.success(gettextCatalog.getString('GTKWave exported')); }, false); }; diff --git a/app/scripts/services/graph.service.js b/app/scripts/services/graph.service.js index 10a2af712..f0f240966 100644 --- a/app/scripts/services/graph.service.js +++ b/app/scripts/services/graph.service.js @@ -1,8 +1,8 @@ 'use strict'; angular.module('icestudio') - .service('graph', ['$rootScope', '$translate', 'nodeFs', 'joint', 'boards', 'nodeSha1', - function($rootScope, $translate, nodeFs, joint, boards, nodeSha1) { + .service('graph', ['$rootScope', 'gettextCatalog', 'nodeFs', 'joint', 'boards', 'nodeSha1', + function($rootScope, gettextCatalog, nodeFs, joint, boards, nodeSha1) { // Variables @@ -254,11 +254,11 @@ angular.module('icestudio') if (data.blockType == 'basic.input' || data.blockType == 'basic.output') { if (paper.options.enabled) { - alertify.prompt($translate.instant('enter_block_label'), data.data.label, + alertify.prompt(gettextCatalog.getString('Enter the block\'s label'), data.data.label, function(evt, label) { data.data.label = label; cellView.renderLabel(); - alertify.success($translate.instant('label_updated')); + alertify.success(gettextCatalog.getString('Label updated')); }); } } @@ -406,7 +406,7 @@ angular.module('icestudio') }; if (type == 'basic.code') { - alertify.prompt($translate.instant('enter_block_ports'), 'a,b c', + alertify.prompt(gettextCatalog.getString('Enter the block\'s ports'), 'a,b c', function(evt, ports) { if (ports) { blockInstance.data = { @@ -461,7 +461,7 @@ angular.module('icestudio') } } else if (type == 'basic.input') { - alertify.prompt($translate.instant('enter_block_label'), 'i', + alertify.prompt(gettextCatalog.getString('Enter the block\'s label'), 'i', function(evt, name) { if (name) { var names = name.split(' '); @@ -501,7 +501,7 @@ angular.module('icestudio') }); } else if (type == 'basic.output') { - alertify.prompt($translate.instant('enter_block_label'), 'o', + alertify.prompt(gettextCatalog.getString('Enter the block\'s label'), 'o', function(evt, name) { if (name) { var names = name.split(' '); @@ -558,7 +558,7 @@ angular.module('icestudio') } } else { - alertify.error($translate.instant('wrong_block_format', { type: type })); + alertify.error(gettextCatalog.getString('Wrong block format: {{type}}', { type: type })); } } }; diff --git a/app/scripts/services/tools.service.js b/app/scripts/services/tools.service.js index 00add871c..5a77b1388 100644 --- a/app/scripts/services/tools.service.js +++ b/app/scripts/services/tools.service.js @@ -1,8 +1,8 @@ 'use strict'; angular.module('icestudio') - .service('tools', ['$translate', 'profile', 'nodeFs', 'nodeFse', 'nodeOs', 'nodePath', 'nodeProcess', 'nodeChildProcess', 'nodeSSHexec', 'nodeRSync', 'common', 'boards', 'compiler', 'utils', - function($translate, profile, nodeFs, nodeFse, nodeOs, nodePath, nodeProcess, nodeChildProcess, nodeSSHexec, nodeRSync, common, boards, compiler, utils) { + .service('tools', ['gettextCatalog', 'gettext', 'profile', 'nodeFs', 'nodeFse', 'nodeOs', 'nodePath', 'nodeProcess', 'nodeChildProcess', 'nodeSSHexec', 'nodeRSync', 'common', 'boards', 'compiler', 'utils', + function(gettextCatalog, gettext, profile, nodeFs, nodeFse, nodeOs, nodePath, nodeProcess, nodeChildProcess, nodeSSHexec, nodeRSync, common, boards, compiler, utils) { var currentAlert = null; var toolchain = { apio: '-', installed: false, disabled: false }; @@ -38,7 +38,15 @@ angular.module('icestudio') if (code) { if (toolchain.installed || toolchain.disabled) { angular.element('#menu').addClass('disable-menu'); - currentAlert = alertify.notify($translate.instant('start_' + commands[0]), 'message', 100000); + // Annotate strings for translation + /// Start verification ... + gettext('start_verify'); + /// Start building ... + gettext('start_build'); + /// Start uploading ... + gettext('start_upload'); + var message = 'start_' + commands[0]; + currentAlert = alertify.notify(gettextCatalog.getString(message), 'message', 100000); $('body').addClass('waiting'); nodeProcess.chdir(this.buildPath); check = this.syncResources(code); @@ -68,7 +76,7 @@ angular.module('icestudio') } } else { - alertify.notify($translate.instant('toolchain_not_installed'), 'error', 5); + alertify.notify(gettextCatalog.getString('Toolchain not installed. Please, install the toolchain'), 'error', 5); } } } @@ -144,13 +152,13 @@ angular.module('icestudio') } else { // Error: file does not exist - alertify.notify($translate.instant('file_does_not_exist', { file: file }), 'error', 3); + alertify.notify(gettextCatalog.getString('File {{file}} does not exist', { file: file }), 'error', 3); ret = false; break; } } catch (e) { - alertify.notify($translate.instant('generic_error', { error: e.toString() }), 'error', 3); + alertify.notify(gettextCatalog.getString('Error: {{error}}', { error: e.toString() }), 'error', 3); ret = false; break; } @@ -167,7 +175,7 @@ angular.module('icestudio') var remoteHostname = profile.data.remoteHostname; if (remoteHostname) { - currentAlert.setContent($translate.instant('sync_remote_files')); + currentAlert.setContent(gettextCatalog.getString('Synchronize remote files ...')); nodeRSync({ src: nodeProcess.cwd() + '/', dest: remoteHostname + ':' + this.buildPath + '/', @@ -178,7 +186,7 @@ angular.module('icestudio') exclude: ['.sconsign.dblite', '*.out', '*.blif', '*.asc', '*.bin'] }, function (error, stdout, stderr, cmd) { if (!error) { - currentAlert.setContent($translate.instant('execute_remote', { label: label })); + currentAlert.setContent(gettextCatalog.getString('Execute remote {{label}} ...', { label: label })); nodeSSHexec('cd ' + this.buildPath + '; ' + (['apio'].concat(commands)).join(' '), remoteHostname, function (error, stdout, stderr) { processExecute(label, callback, error, stdout, stderr); @@ -207,19 +215,19 @@ angular.module('icestudio') if (stdout) { if (stdout.indexOf('[upload] Error') != -1 || stdout.indexOf('Error: board not detected') != -1) { - alertify.notify($translate.instant('board_not_detected', { name: '' + boards.selectedBoard.info.label + '' }), 'error', 3); + alertify.notify(gettextCatalog.getString('Board {{name}} not detected', { name: '' + boards.selectedBoard.info.label + '' }), 'error', 3); } else if (stdout.indexOf('Error: unkown board') != -1) { - alertify.notify($translate.instant('unknown_board'), 'error', 3); + alertify.notify(gettextCatalog.getString('Unknown board'), 'error', 3); } else if (stdout.indexOf('set_io: too few arguments') != -1) { - alertify.notify($translate.instant('fpga_io_not_defined'), 'error', 3); + alertify.notify(gettextCatalog.getString('FPGA I/O ports not defined'), 'error', 3); } else if (stdout.indexOf('error: unknown pin') != -1) { - alertify.notify($translate.instant('fpga_io_not_defined'), 'error', 3); + alertify.notify(gettextCatalog.getString('FPGA I/O ports not defined'), 'error', 3); } else if (stdout.indexOf('error: duplicate pin constraints') != -1) { - alertify.notify($translate.instant('duplicated_fpga_io'), 'error', 3); + alertify.notify(gettextCatalog.getString('Duplicated FPGA I/O ports'), 'error', 3); } else { var stdoutError = stdout.split('\n').filter(isError); @@ -242,10 +250,10 @@ angular.module('icestudio') else if (stderr) { if (stderr.indexOf('Could not resolve hostname') != -1 || stderr.indexOf('Connection refused') != -1) { - alertify.notify($translate.instant('wrong_remote_hostname', { name: profile.data.remoteHostname }), 'error', 3); + alertify.notify(gettextCatalog.getString('Wrong remote hostname {{name}}', { name: profile.data.remoteHostname }), 'error', 3); } else if (stderr.indexOf('No route to host') != -1) { - alertify.notify($translate.instant('remote_host_not_connected', { name: profile.data.remoteHostname }), 'error', 3); + alertify.notify(gettextCatalog.getString('Remote host {{name}} not connected', { name: profile.data.remoteHostname }), 'error', 3); } else { alertify.notify(stderr, 'error', 5); @@ -253,7 +261,15 @@ angular.module('icestudio') } } else { - alertify.success($translate.instant('done_' + label)); + // Annotate strings for translation + /// Verification done + gettext('done_verify'); + /// Build done + gettext('done_build'); + /// Upload done + gettext('done_upload'); + var message = 'done_' + label; + alertify.success(gettextCatalog.getString(message)); } $('body').removeClass('waiting'); } @@ -264,7 +280,7 @@ angular.module('icestudio') installDefaultToolchain(); } else { - alertify.confirm('Default toolchain not found. Toolchain will be downloaded. This operation requires Internet connection. Do you want to continue?', + alertify.confirm(gettextCatalog.getString('Default toolchain not found. Toolchain will be downloaded. This operation requires Internet connection. Do you want to continue?'), function() { installOnlineToolchain(); }); @@ -272,7 +288,7 @@ angular.module('icestudio') } this.updateToolchain = function() { - alertify.confirm('The toolchain will be updated. This operation requires Internet connection. Do you want to continue?', + alertify.confirm(gettextCatalog.getString('The toolchain will be updated. This operation requires Internet connection. Do you want to continue?'), function() { installOnlineToolchain(); }); @@ -280,23 +296,23 @@ angular.module('icestudio') this.resetToolchain = function() { if (utils.checkDefaultToolchain()) { - alertify.confirm('The toolchain will be restored to default. Do you want to continue?', + alertify.confirm(gettextCatalog.getString('The toolchain will be restored to default. Do you want to continue?'), function() { utils.removeToolchain(); installDefaultToolchain(); }); } else { - alertify.alert('Error: default toolchain not found in \'' + utils.TOOLCHAIN_DIR + '\''); + alertify.alert(gettextCatalog.getString('Error: default toolchain not found in \'{{dir}}\'', { dir: utils.TOOLCHAIN_DIR})); } } this.removeToolchain = function() { - alertify.confirm($translate.instant('remove_toolchain_confirmation'), + alertify.confirm(gettextCatalog.getString('The toolchain will be removed. Do you want to continue?'), function() { utils.removeToolchain(); toolchain.installed = false; - alertify.success($translate.instant('toolchain_removed')); + alertify.success(gettextCatalog.getString('Toolchain removed')); }); } @@ -316,7 +332,7 @@ angular.module('icestudio') var content = [ '
', - '

' + $translate.instant('installing_toolchain') + '

', + '

' + gettextCatalog.getString('Installing toolchain') + '

', '
', '
', '
', - '

' + $translate.instant('installing_toolchain') + '

', + '

' + gettextCatalog.getString('Installing toolchain') + '

', '
', '
', '
-1); const DARWIN = Boolean(process.platform.indexOf('darwin') > -1); @@ -405,13 +405,13 @@ angular.module('icestudio') endLazyProcess(); if (!error) { if (enable) { - alertify.success($translate.instant('drivers_enabled')); + alertify.success(gettextCatalog.getString('Drivers enabled')); } else { - alertify.warning($translate.instant('drivers_disabled')); + alertify.warning(gettextCatalog.getString('Drivers disabled')); } setTimeout(function() { - alertify.notify($translate.instant('unplug_and_reconnect'), 'message', 5); + alertify.notify(gettextCatalog.getString('Unplug and reconnect the board'), 'message', 5); }, 1000); } }); @@ -442,17 +442,17 @@ angular.module('icestudio') if (error) { if ((stderr.indexOf('brew: command not found') != -1) || (stderr.indexOf('brew: No such file or directory') != -1)) { - alertify.notify($translate.instant('homebrew_required'), 'error', 5); + alertify.notify(gettextCatalog.getString('Homebrew is required'), 'error', 5); } else if (stderr.indexOf('Error: Failed to download') != -1) { - alertify.notify($translate.instant('internet_connection_required'), 'error', 5); + alertify.notify(gettextCatalog.getString('Internet connection required'), 'error', 5); } else { alertify.notify(stderr, 'error', 5); } } else { - alertify.success($translate.instant('drivers_enabled')); + alertify.success(gettextCatalog.getString('Drivers enabled')); } }); } @@ -471,35 +471,35 @@ angular.module('icestudio') // console.log(error, stdout, stderr); endLazyProcess(); if (!error) { - alertify.warning($translate.instant('drivers_disabled')); + alertify.warning(gettextCatalog.getString('Drivers disabled')); } }); } function enableWindowsDrivers() { - alertify.confirm($translate.instant('install_drivers_windows'), function() { + alertify.confirm(gettextCatalog.getString('

FTDI driver installation instructions

  1. Connect the FPGA board
  2. Replace the (Interface 0) driver of the board by libusbK
  3. Unplug and reconnect the board
'), function() { beginLazyProcess(); nodeChildProcess.exec([APIO_CMD, 'drivers', '--enable'].join(' '), function(error, stdout, stderr) { // console.log(error, stdout, stderr); endLazyProcess(); if (stderr) { - alertify.notify($translate.instant('toolchain_not_installed'), 'error', 5); + alertify.notify(gettextCatalog.getString('Toolchain not installed. Please, install the toolchain'), 'error', 5); } if (!error) { - alertify.notify($translate.instant('unplug_and_reconnect'), 'message', 5); + alertify.notify(gettextCatalog.getString('Unplug and reconnect the board'), 'message', 5); } }); }); } function disableWindowsDrivers() { - alertify.confirm($translate.instant('uninstall_drivers_windows'), function() { + alertify.confirm(gettextCatalog.getString('

FTDI driver uninstallation instructions

  1. Find the FPGA USB Device
  2. Select the board interface and uninstall the driver
'), function() { beginLazyProcess(); nodeChildProcess.exec([APIO_CMD, 'drivers', '--disable'].join(' '), function(error, stdout, stderr) { // console.log(error, stdout, stderr); endLazyProcess(); if (stderr) { - alertify.notify($translate.instant('toolchain_not_installed'), 'error', 5); + alertify.notify(gettextCatalog.getString('Toolchain not installed. Please, install the toolchain'), 'error', 5); } }); }); diff --git a/app/views/menu.html b/app/views/menu.html index f67671f1f..01004c0b0 100644 --- a/app/views/menu.html +++ b/app/views/menu.html @@ -20,16 +20,16 @@